]> gitweb.factorcode.org Git - factor.git/commitdiff
first commit (move from factor-gir); basis/pango is gir-based now (very draft version...
authorAnton Gorenko <ex.rzrjck@gmail.com>
Sun, 9 May 2010 17:21:12 +0000 (23:21 +0600)
committerAnton Gorenko <ex.rzrjck@gmail.com>
Sun, 9 May 2010 17:21:12 +0000 (23:21 +0600)
49 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/gdk/Gdk-2.0.gir [new file with mode: 0644]
basis/gdk/authors.txt [new file with mode: 0644]
basis/gdk/gdk.factor [new file with mode: 0644]
basis/gdk/gl/GdkGL-1.0.gir [new file with mode: 0644]
basis/gdk/gl/authors.txt [new file with mode: 0644]
basis/gdk/gl/gl.factor [new file with mode: 0644]
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/pixbuf.factor [new file with mode: 0644]
basis/gio/Gio-2.0.gir [new file with mode: 0644]
basis/gio/authors.txt [new file with mode: 0644]
basis/gio/gio.factor [new file with mode: 0644]
basis/gir/authors.txt [new file with mode: 0644]
basis/gir/common/common.factor [new file with mode: 0644]
basis/gir/ffi/ffi.factor [new file with mode: 0644]
basis/gir/gir.factor [new file with mode: 0755]
basis/gir/loader/loader.factor [new file with mode: 0644]
basis/gir/repository/repository.factor [new file with mode: 0644]
basis/gir/types/types.factor [new file with mode: 0644]
basis/glib/GLib-2.0.gir [new file with mode: 0644]
basis/gmodule/GModule-2.0.gir [new file with mode: 0644]
basis/gmodule/authors.txt [new file with mode: 0644]
basis/gmodule/gmodule.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/gobject.factor [new file with mode: 0644]
basis/gst/Gst-0.10.gir [new file with mode: 0644]
basis/gst/authors.txt [new file with mode: 0644]
basis/gst/gst.factor [new file with mode: 0644]
basis/gtk/Gtk-2.0.gir [new file with mode: 0644]
basis/gtk/authors.txt [new file with mode: 0644]
basis/gtk/gl/GtkGL-1.0.gir [new file with mode: 0644]
basis/gtk/gl/authors.txt [new file with mode: 0644]
basis/gtk/gl/gl.factor [new file with mode: 0644]
basis/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]
extra/gir/samples/lowlevel/authors.txt [new file with mode: 0644]
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/gir/samples/lowlevel/hello-world/authors.txt [new file with mode: 0644]
extra/gir/samples/lowlevel/hello-world/hello-world.factor [new file with mode: 0644]
extra/gir/samples/lowlevel/lowlevel.factor [new file with mode: 0644]
extra/gir/samples/lowlevel/opengl/authors.txt [new file with mode: 0644]
extra/gir/samples/lowlevel/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..27bb0f0
--- /dev/null
@@ -0,0 +1,8681 @@
+<?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="GObject" version="2.0"/>
+  <namespace name="Atk"
+             version="1.0"
+             shared-library="libatk-1.0.so.0"
+             c:prefix="Atk">
+    <alias name="AttributeSet" target="GLib.SList" c:type="AtkAttributeSet"/>
+    <alias name="State" target="uint64" c:type="AtkState"/>
+    <interface name="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">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_n_actions" invoker="get_n_actions">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_description" invoker="get_description">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_name" invoker="get_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_keybinding" invoker="get_keybinding">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_description" invoker="set_description">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="desc" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_localized_name" invoker="get_localized_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="do_action"
+              c:identifier="atk_action_do_action"
+              doc="Perform the specified action on the object.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_actions"
+              c:identifier="atk_action_get_n_actions"
+              doc="Gets the number of accessible actions available on the object.
+If there are more than one, the first one is considered the
+&quot;default&quot; action of the object.
+implement this interface.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_description"
+              c:identifier="atk_action_get_description"
+              doc="Returns a description of the specified action of the object.
+Returns a description string, or %NULL
+if @action does not implement this interface.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name"
+              c:identifier="atk_action_get_name"
+              doc="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 &apos;interaction type&apos; which the
+object supports. By convention, the above strings should be used to
+represent the actions which correspond to the common point-and-click
+&quot;click&quot;, &quot;press&quot;, &quot;release&quot;, &quot;drag&quot;, &quot;drop&quot;, &quot;popup&quot;, etc.
+The &quot;popup&quot; 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 &apos;bound&apos; 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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_keybinding"
+              c:identifier="atk_action_get_keybinding"
+              doc="Returns a keybinding associated with this action, if one exists.
+The returned string is in the format &quot;&lt;a&gt;;&lt;b&gt;;&lt;c&gt;&quot;
+(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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_description"
+              c:identifier="atk_action_set_description"
+              doc="Sets a description of the specified action of the object.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="desc" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_localized_name"
+              c:identifier="atk_action_get_localized_name"
+              doc="Returns the localized name of the specified action of the object.
+Returns a name string, or %NULL
+if @action does not implement this interface.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </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" c:type="do_action">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_n_actions">
+        <callback name="get_n_actions" c:type="get_n_actions">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_name">
+        <callback name="get_name" c:type="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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_keybinding">
+        <callback name="get_keybinding" c:type="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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_description">
+        <callback name="set_description" c:type="set_description">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="desc" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_localized_name">
+        <callback name="get_localized_name" c:type="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">
+              <type name="int" 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="Call atk_text_attr_get_value() for those which are strings.
+For values which are numbers, the string representation of the number
+is in value.
+A string name/value pair representing a text attribute.">
+      <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: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">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler" transfer-ownership="none">
+            <type name="FocusHandler" c:type="AtkFocusHandler"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="contains" invoker="contains">
+        <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="coord_type" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="ref_accessible_at_point"
+                      invoker="ref_accessible_at_point">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </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="coord_type" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_extents" invoker="get_extents">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </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>
+          <parameter name="coord_type" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_position" invoker="get_position">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_size" invoker="get_size">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </virtual-method>
+      <virtual-method name="grab_focus" invoker="grab_focus">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="remove_focus_handler"
+                      invoker="remove_focus_handler">
+        <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>
+      </virtual-method>
+      <virtual-method name="set_extents" invoker="set_extents">
+        <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>
+          <parameter name="coord_type" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_position" invoker="set_position">
+        <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="coord_type" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_size" invoker="set_size">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <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>
+      <virtual-method name="get_layer" invoker="get_layer">
+        <return-value transfer-ownership="full">
+          <type name="Layer" c:type="AtkLayer"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_mdi_zorder" invoker="get_mdi_zorder">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_alpha" invoker="get_alpha">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </virtual-method>
+      <method name="add_focus_handler"
+              c:identifier="atk_component_add_focus_handler"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler" transfer-ownership="none" scope="call">
+            <type name="FocusHandler" c:type="AtkFocusHandler"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="contains"
+              c:identifier="atk_component_contains"
+              doc="or to the components top level window
+Checks whether the specified point is within the extent of the @component.
+the extent of the @component or not">
+        <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="coord_type" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref_accessible_at_point"
+              c:identifier="atk_component_ref_accessible_at_point"
+              doc="or to the components top level window
+Gets a reference to the accessible child, if one exists, at the
+coordinate point specified by @x and @y.">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </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="coord_type" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_extents"
+              c:identifier="atk_component_get_extents"
+              doc="or to the components top level window
+Gets the rectangle which gives the extent of the @component.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </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>
+          <parameter name="coord_type" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_position"
+              c:identifier="atk_component_get_position"
+              doc="or to the components top level window
+Gets the position of @component in the form of
+a point specifying @component&apos;s top-left corner.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size"
+              c:identifier="atk_component_get_size"
+              doc="Gets the size of the @component in terms of width and height.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="get_layer"
+              c:identifier="atk_component_get_layer"
+              doc="Gets the layer of the component.">
+        <return-value transfer-ownership="full">
+          <type name="Layer" c:type="AtkLayer"/>
+        </return-value>
+      </method>
+      <method name="get_mdi_zorder"
+              c:identifier="atk_component_get_mdi_zorder"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="grab_focus"
+              c:identifier="atk_component_grab_focus"
+              doc="Grabs focus for this @component.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="remove_focus_handler"
+              c:identifier="atk_component_remove_focus_handler"
+              doc="from @component
+Remove the handler specified by @handler_id from the list of
+functions to be executed when this object receives focus events
+(in or out).">
+        <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="set_extents"
+              c:identifier="atk_component_set_extents"
+              doc="or to the components top level window
+Sets the extents of @component.">
+        <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>
+          <parameter name="coord_type" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_position"
+              c:identifier="atk_component_set_position"
+              doc="or to the components top level window
+Sets the postition of @component.">
+        <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="coord_type" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size"
+              c:identifier="atk_component_set_size"
+              doc="Set the size of the @component in terms of width and height.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <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="get_alpha"
+              c:identifier="atk_component_get_alpha"
+              doc="Returns the alpha value (i.e. the opacity) for this
+(fully opaque)."
+              version="1.12">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <glib:signal name="bounds-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Rectangle" c:type="AtkRectangle"/>
+          </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">
+        <callback name="add_focus_handler" c:type="add_focus_handler">
+          <return-value transfer-ownership="none">
+            <type name="uint" 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">
+              <type name="FocusHandler" c:type="AtkFocusHandler"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="contains">
+        <callback name="contains" c:type="contains">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="coord_type" transfer-ownership="none">
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="ref_accessible_at_point">
+        <callback name="ref_accessible_at_point"
+                  c:type="ref_accessible_at_point">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="coord_type" transfer-ownership="none">
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_extents">
+        <callback name="get_extents" c:type="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" direction="out" transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="y" direction="out" transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </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>
+            <parameter name="coord_type" transfer-ownership="none">
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_position">
+        <callback name="get_position" c:type="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" direction="out" transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="y" direction="out" transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="coord_type" transfer-ownership="none">
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_size">
+        <callback name="get_size" c:type="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" 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>
+        </callback>
+      </field>
+      <field name="grab_focus">
+        <callback name="grab_focus" c:type="grab_focus">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="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">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_extents">
+        <callback name="set_extents" c:type="set_extents">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <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>
+            <parameter name="coord_type" transfer-ownership="none">
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_position">
+        <callback name="set_position" c:type="set_position">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="coord_type" transfer-ownership="none">
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_size">
+        <callback name="set_size" c:type="set_size">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <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="get_layer">
+        <callback name="get_layer" c:type="get_layer">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_mdi_zorder">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="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" c:type="get_alpha">
+          <return-value transfer-ownership="none">
+            <type name="double" 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:type="AtkDocument"
+               glib:type-name="AtkDocument"
+               glib:get-type="atk_document_get_type"
+               glib:type-struct="DocumentIface">
+      <virtual-method name="get_document_type" invoker="get_document_type">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_document" invoker="get_document">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </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_attributes">
+        <return-value transfer-ownership="full">
+          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+        </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="set_document_attribute">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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_document_type"
+              c:identifier="atk_document_get_document_type"
+              doc="Gets a string indicating the document type.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_document"
+              c:identifier="atk_document_get_document"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="get_locale"
+              c:identifier="atk_document_get_locale"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_attributes"
+              c:identifier="atk_document_get_attributes"
+              doc="Gets an AtkAttributeSet which describes document-wide
+attributes as name-value pairs.
+set name-value-pair attributes associated with this document
+as a whole."
+              version="1.12">
+        <return-value transfer-ownership="full">
+          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+        </return-value>
+      </method>
+      <method name="get_attribute_value"
+              c:identifier="atk_document_get_attribute_value"
+              doc="whose value is being queried.
+document, or NULL if a value for #attribute_name has not been specified
+for this document."
+              version="1.12">
+        <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>
+      </method>
+      <method name="set_attribute_value"
+              c:identifier="atk_document_set_attribute_value"
+              doc="whose value is being set.
+for this document, FALSE otherwise (e.g. if the document does not
+allow the attribute to be modified)."
+              version="1.12">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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>
+      </method>
+      <glib:signal name="load-complete">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="load-stopped">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="reload">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="get_document_type">
+          <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">
+        <callback name="get_document" c:type="get_document">
+          <return-value transfer-ownership="none">
+            <type name="any" 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" c:type="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">
+        <callback name="get_document_attributes"
+                  c:type="get_document_attributes">
+          <return-value transfer-ownership="full">
+            <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"
+                  c:type="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"
+                  c:type="set_document_attribute">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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:type="AtkEditableText"
+               glib:type-name="AtkEditableText"
+               glib:get-type="atk_editable_text_get_type"
+               glib:type-struct="EditableTextIface">
+      <virtual-method name="set_run_attributes" invoker="set_run_attributes">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_text_contents" invoker="set_text_contents">
+        <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>
+      </virtual-method>
+      <virtual-method name="insert_text" invoker="insert_text">
+        <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>
+          <parameter name="length" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="position" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="copy_text" invoker="copy_text">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="cut_text" invoker="cut_text">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="delete_text" invoker="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="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="paste_text" invoker="paste_text">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_run_attributes"
+              c:identifier="atk_editable_text_set_run_attributes">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text_contents"
+              c:identifier="atk_editable_text_set_text_contents"
+              doc="Set text contents of @text.">
+        <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>
+      </method>
+      <method name="insert_text"
+              c:identifier="atk_editable_text_insert_text"
+              doc="the position at which to insert the text. After the call it
+points at the position after the newly inserted text.
+Insert text at a given position.">
+        <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>
+          <parameter name="length" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="position" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy_text"
+              c:identifier="atk_editable_text_copy_text"
+              doc="Copy text from @start_pos up to, but not including @end_pos
+to the clipboard.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="cut_text"
+              c:identifier="atk_editable_text_cut_text"
+              doc="Copy text from @start_pos up to, but not including @end_pos
+to the clipboard and then delete from the widget.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_text"
+              c:identifier="atk_editable_text_delete_text"
+              doc="Delete text @start_pos up to, but not including @end_pos.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="paste_text"
+              c:identifier="atk_editable_text_paste_text"
+              doc="Paste text from clipboard to specified @position.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </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" c:type="set_run_attributes">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="end_offset" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_text_contents">
+        <callback name="set_text_contents" c:type="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">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert_text">
+        <callback name="insert_text" c:type="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">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="length" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="position"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy_text">
+        <callback name="copy_text" c:type="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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="end_pos" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cut_text">
+        <callback name="cut_text" c:type="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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="end_pos" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_text">
+        <callback name="delete_text" c:type="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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="end_pos" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paste_text">
+        <callback name="paste_text" c:type="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">
+              <type name="int" 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="the specified event (e.g. &apos;focus:&apos;) takes place.
+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 &quot;focus:&quot;.  Most clients of ATK will prefer to
+attach signal handlers for the various ATK signals instead.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="obj" transfer-ownership="none">
+          <type name="Object" c:type="AtkObject*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="EventListenerInit"
+              c:type="AtkEventListenerInit"
+              doc="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.">
+      <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="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="Function" c:type="AtkFunction">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="GObjectAccessible"
+           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"
+                doc="Gets the accessible object for the specified @obj.">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="obj" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_object"
+              c:identifier="atk_gobject_accessible_get_object"
+              doc="Gets the GObject for which @obj is the accessible object.">
+        <return-value transfer-ownership="full">
+          <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: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_uri" invoker="get_uri">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_object" invoker="get_object">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_end_index" invoker="get_end_index">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_start_index" invoker="get_start_index">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="is_valid" invoker="is_valid">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_n_anchors" invoker="get_n_anchors">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="link_state">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="is_selected_link">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_uri"
+              c:identifier="atk_hyperlink_get_uri"
+              doc="Get a the URI associated with the anchor specified
+by @i of @link_.
+Multiple anchors are primarily used by client-side image maps.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i"
+                     transfer-ownership="none"
+                     doc="integer specifying the desired anchor">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object"
+              c:identifier="atk_hyperlink_get_object"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i"
+                     transfer-ownership="none"
+                     doc="integer specifying the desired anchor">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_end_index"
+              c:identifier="atk_hyperlink_get_end_index"
+              doc="Gets the index with the hypertext document at which this link ends.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_start_index"
+              c:identifier="atk_hyperlink_get_start_index"
+              doc="Gets the index with the hypertext document at which this link begins.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="is_valid"
+              c:identifier="atk_hyperlink_is_valid"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_inline"
+              c:identifier="atk_hyperlink_is_inline"
+              doc="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.
+*">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_n_anchors"
+              c:identifier="atk_hyperlink_get_n_anchors"
+              doc="Gets the number of anchors associated with this hyperlink.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <property name="end-index">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="number-of-anchors">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="selected-link">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="start-index">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <glib:signal name="link-activated">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="get_uri">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_object">
+        <callback name="get_object" c:type="get_object">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_end_index">
+        <callback name="get_end_index" c:type="get_end_index">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="get_start_index">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="is_valid">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="get_n_anchors">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="link_state">
+          <return-value transfer-ownership="none">
+            <type name="uint" 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" c:type="is_selected_link">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="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: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">
+        <return-value transfer-ownership="full">
+          <type name="Hyperlink" c:type="AtkHyperlink*"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_hyperlink"
+              c:identifier="atk_hyperlink_impl_get_hyperlink"
+              doc="Gets the hyperlink associated with this object.
+Returns an AtkHyperlink object which points to this implementing AtkObject."
+              version="1.12">
+        <return-value transfer-ownership="full">
+          <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">
+        <callback name="get_hyperlink" c:type="get_hyperlink">
+          <return-value transfer-ownership="full">
+            <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: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">
+        <return-value transfer-ownership="full">
+          <type name="Hyperlink" c:type="AtkHyperlink*"/>
+        </return-value>
+        <parameters>
+          <parameter name="link_index" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_n_links" invoker="get_n_links">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_link_index" invoker="get_link_index">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="char_index" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_link"
+              c:identifier="atk_hypertext_get_link"
+              doc="Gets the link in this hypertext document at index
+index @link_index">
+        <return-value transfer-ownership="full">
+          <type name="Hyperlink" c:type="AtkHyperlink*"/>
+        </return-value>
+        <parameters>
+          <parameter name="link_index" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_links"
+              c:identifier="atk_hypertext_get_n_links"
+              doc="Gets the number of links within this hypertext document.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_link_index"
+              c:identifier="atk_hypertext_get_link_index"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="char_index" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="link-selected">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="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">
+        <callback name="get_link" c:type="get_link">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_n_links">
+        <callback name="get_n_links" c:type="get_n_links">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="get_link_index">
+          <return-value transfer-ownership="none">
+            <type name="int" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="link_selected">
+        <callback name="link_selected" c:type="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="int" 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:type="AtkImage"
+               glib:type-name="AtkImage"
+               glib:get-type="atk_image_get_type"
+               glib:type-struct="ImageIface">
+      <virtual-method name="get_image_position" invoker="get_image_position">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_image_description"
+                      invoker="get_image_description">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_image_size" invoker="get_image_size">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </virtual-method>
+      <virtual-method name="set_image_description"
+                      invoker="set_image_description">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_image_locale" invoker="get_image_locale">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_image_description"
+              c:identifier="atk_image_get_image_description"
+              doc="Get a textual description of this image.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_image_size"
+              c:identifier="atk_image_get_image_size"
+              doc="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).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="set_image_description"
+              c:identifier="atk_image_set_image_description"
+              doc="Sets the textual description for this image.
+not be completed.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_image_position"
+              c:identifier="atk_image_get_image_position"
+              doc="or to the components top level window
+Gets the position of the image in the form of a point specifying the
+images top-left corner.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_image_locale"
+              c:identifier="atk_image_get_image_locale"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </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" c:type="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" direction="out" transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="y" direction="out" transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="coord_type" transfer-ownership="none">
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_image_description">
+        <callback name="get_image_description" c:type="get_image_description">
+          <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="get_image_size">
+        <callback name="get_image_size" c:type="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" 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>
+        </callback>
+      </field>
+      <field name="set_image_description">
+        <callback name="set_image_description" c:type="set_image_description">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_image_locale">
+        <callback name="get_image_locale" c:type="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">
+    </record>
+    <interface name="ImplementorIface"
+               c:type="AtkImplementorIface"
+               glib:type-name="AtkImplementorIface"
+               glib:get-type="atk_implementor_get_type">
+      <method name="ref_accessible"
+              c:identifier="atk_implementor_ref_accessible"
+              doc="if a non-null return value is required.
+Gets a reference to an object&apos;s #AtkObject implementation, if
+the object implements #AtkObjectIface">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="KeyEventStruct"
+            c:type="AtkKeyEventStruct"
+            doc="The meaning of the bits is currently defined to match the bitmask used by GDK in
+GdkEventType.state, see
+http://developer.gnome.org/doc/API/2.0/gdk/gdk-Event-Structures.html#GdkEventKey
+/usr/X11/include/keysymdef.h.
+result from this keypress, if the key is a control or graphic character, or a symbolic name for this keypress.
+Alphanumeric and printable keys will have the symbolic key name in this string member, for instance &quot;A&quot;. &quot;0&quot;,
+&quot;semicolon&quot;, &quot;aacute&quot;.  Keypad keys have the prefix &quot;KP&quot;.
+These timestamps are relative to a starting point which should be considered arbitrary,
+and only used to compare the dispatch times of events to one another.
+Encapsulates information about a key event.">
+      <field name="type" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="state" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="keyval" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="length" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="string" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="keycode" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="timestamp" writable="1">
+        <type name="uint32" 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="notification is being given.
+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.">
+      <return-value transfer-ownership="none"
+                    doc="if the event emission should be stopped and the event">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="KeyEventStruct" c:type="AtkKeyEventStruct*"/>
+        </parameter>
+        <parameter name="func_data" transfer-ownership="none">
+          <type name="any" 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: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"
+                doc="Obtain the singleton instance of AtkMisc for this application."
+                version="1.13">
+        <return-value transfer-ownership="none">
+          <type name="Misc" c:type="AtkMisc*"/>
+        </return-value>
+      </function>
+      <virtual-method name="threads_enter" invoker="threads_enter">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="threads_leave" invoker="threads_leave">
+        <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"
+              doc="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)."
+              version="1.13">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="threads_leave"
+              c:identifier="atk_misc_threads_leave"
+              doc="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)."
+              version="1.13">
+        <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" c:type="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" c:type="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="any"/>
+        </array>
+      </field>
+    </record>
+    <class name="NoOpObject"
+           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="Provides a default (non-functioning stub) #AtkObject.
+Application maintainers should not use this method.">
+        <return-value transfer-ownership="full" doc="#AtkObject">
+          <type name="NoOpObject" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="obj" transfer-ownership="none">
+            <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: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="Creates an instance of an #AtkObjectFactory which generates primitive
+(non-functioning) #AtkObjects.">
+        <return-value transfer-ownership="full">
+          <type name="NoOpObjectFactory" 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:type="AtkObject"
+           parent="GObject.Object"
+           glib:type-name="AtkObject"
+           glib:get-type="atk_object_get_type"
+           glib:type-struct="ObjectClass">
+      <virtual-method name="get_name" invoker="get_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_description" invoker="get_description">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_parent" invoker="get_parent">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_n_children">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="ref_child">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_index_in_parent" invoker="get_index_in_parent">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="ref_relation_set" invoker="ref_relation_set">
+        <return-value transfer-ownership="full">
+          <type name="RelationSet" c:type="AtkRelationSet*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_role" invoker="get_role">
+        <return-value transfer-ownership="full">
+          <type name="Role" c:type="AtkRole"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_layer">
+        <return-value transfer-ownership="full">
+          <type name="Layer" c:type="AtkLayer"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_mdi_zorder">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="ref_state_set" invoker="ref_state_set">
+        <return-value transfer-ownership="full">
+          <type name="StateSet" c:type="AtkStateSet*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_name" invoker="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="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_description" invoker="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>
+      </virtual-method>
+      <virtual-method name="set_parent" invoker="set_parent">
+        <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">
+        <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>
+      <virtual-method name="connect_property_change_handler"
+                      invoker="connect_property_change_handler">
+        <return-value transfer-ownership="none">
+          <type name="uint" 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="remove_property_change_handler"
+                      invoker="remove_property_change_handler">
+        <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>
+      </virtual-method>
+      <virtual-method name="initialize" invoker="initialize">
+        <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="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_attributes" invoker="get_attributes">
+        <return-value transfer-ownership="full">
+          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_name"
+              c:identifier="atk_object_get_name"
+              doc="Gets the accessible name of the accessible.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_description"
+              c:identifier="atk_object_get_description"
+              doc="Gets the accessible description of the accessible.
+of the accessible.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_parent"
+              c:identifier="atk_object_get_parent"
+              doc="Gets the accessible parent of the accessible.">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+      </method>
+      <method name="get_n_accessible_children"
+              c:identifier="atk_object_get_n_accessible_children"
+              doc="Gets the number of accessible children of the accessible.
+of the accessible.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="ref_accessible_child"
+              c:identifier="atk_object_ref_accessible_child"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref_relation_set"
+              c:identifier="atk_object_ref_relation_set"
+              doc="Gets the #AtkRelationSet associated with the object.">
+        <return-value transfer-ownership="full">
+          <type name="RelationSet" c:type="AtkRelationSet*"/>
+        </return-value>
+      </method>
+      <method name="get_role"
+              c:identifier="atk_object_get_role"
+              doc="Gets the role of the accessible.">
+        <return-value transfer-ownership="full">
+          <type name="Role" c:type="AtkRole"/>
+        </return-value>
+      </method>
+      <method name="get_attributes"
+              c:identifier="atk_object_get_attributes"
+              doc="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 &quot;name-value pair&quot; #AtkAttributeSet properties.
+the object, or an empty set if the object has no name-value pair attributes assigned to it."
+              version="1.12">
+        <return-value transfer-ownership="full">
+          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+        </return-value>
+      </method>
+      <method name="ref_state_set"
+              c:identifier="atk_object_ref_state_set"
+              doc="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">
+        <return-value transfer-ownership="full">
+          <type name="StateSet" c:type="AtkStateSet*"/>
+        </return-value>
+      </method>
+      <method name="get_index_in_parent"
+              c:identifier="atk_object_get_index_in_parent"
+              doc="Gets the 0-based index of this accessible in its parent; returns -1 if the
+accessible does not have an accessible parent.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_name"
+              c:identifier="atk_object_set_name"
+              doc="Sets the accessible name of the accessible.">
+        <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="set_description"
+              c:identifier="atk_object_set_description"
+              doc="Sets the accessible description of the accessible.">
+        <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_parent"
+              c:identifier="atk_object_set_parent"
+              doc="Sets the accessible parent of the accessible.">
+        <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="Sets the role of the accessible.">
+        <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>
+      <method name="connect_property_change_handler"
+              c:identifier="atk_object_connect_property_change_handler"
+              doc="Specifies a function to be called when a property changes value.
+atk_object_remove_property_change_handler()">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler" transfer-ownership="none" scope="call">
+            <type name="PropertyChangeHandler"
+                  c:type="AtkPropertyChangeHandler*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_property_change_handler"
+              c:identifier="atk_object_remove_property_change_handler"
+              doc="Removes a property change handler.">
+        <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="notify_state_change"
+              c:identifier="atk_object_notify_state_change"
+              doc="Emits a state-change signal for the specified state.">
+        <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="AtkState"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="initialize"
+              c:identifier="atk_object_initialize"
+              doc="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">
+        <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="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_relationship"
+              c:identifier="atk_object_add_relationship"
+              doc="Adds a relationship of the specified type with the specified target.
+Returns TRUE if the relationship is added.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="relationship" transfer-ownership="none">
+            <type name="RelationType" c:type="AtkRelationType"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_relationship"
+              c:identifier="atk_object_remove_relationship"
+              doc="Removes a relationship of the specified type with the specified target.
+Returns TRUE if the relationship is removed.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="relationship" transfer-ownership="none">
+            <type name="RelationType" c:type="AtkRelationType"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="accessible-component-layer">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="accessible-component-mdi-zorder">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="accessible-description" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="accessible-hypertext-nlinks">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="accessible-name" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="accessible-parent" writable="1">
+        <type name="Object" c:type="AtkObject"/>
+      </property>
+      <property name="accessible-role" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="accessible-table-caption" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="accessible-table-caption-object" writable="1">
+        <type name="Object" c:type="AtkObject"/>
+      </property>
+      <property name="accessible-table-column-description" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="accessible-table-column-header" writable="1">
+        <type name="Object" c:type="AtkObject"/>
+      </property>
+      <property name="accessible-table-row-description" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="accessible-table-row-header" writable="1">
+        <type name="Object" c:type="AtkObject"/>
+      </property>
+      <property name="accessible-table-summary" writable="1">
+        <type name="Object" c:type="AtkObject"/>
+      </property>
+      <property name="accessible-value" writable="1">
+        <type name="double" c:type="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="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>
+      <glib:signal name="children-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="focus-event">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="property-change">
+        <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>
+      <glib:signal name="state-change">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="visible-data-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="get_name">
+          <return-value transfer-ownership="none">
+            <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" c:type="get_description">
+          <return-value transfer-ownership="none">
+            <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">
+        <callback name="get_parent" c:type="get_parent">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_n_children">
+          <return-value transfer-ownership="none">
+            <type name="int" 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">
+        <callback name="ref_child" c:type="ref_child">
+          <return-value transfer-ownership="full">
+            <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="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_index_in_parent">
+        <callback name="get_index_in_parent" c:type="get_index_in_parent">
+          <return-value transfer-ownership="none">
+            <type name="int" 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">
+        <callback name="ref_relation_set" c:type="ref_relation_set">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_role">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_layer">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_mdi_zorder">
+          <return-value transfer-ownership="none">
+            <type name="int" 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">
+        <callback name="ref_state_set" c:type="ref_state_set">
+          <return-value transfer-ownership="full">
+            <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" c:type="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">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_description">
+        <callback name="set_description" c:type="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" c:type="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" c:type="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">
+        <callback name="connect_property_change_handler"
+                  c:type="connect_property_change_handler">
+          <return-value transfer-ownership="none">
+            <type name="uint" 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"
+                  c:type="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="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="initialize">
+        <callback name="initialize" c:type="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">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="children_changed">
+        <callback name="children_changed" c:type="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="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="changed_child" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="focus_event">
+        <callback name="focus_event" c:type="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="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="property_change">
+        <callback name="property_change" c:type="property_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="values" transfer-ownership="none">
+              <type name="PropertyValues" c:type="AtkPropertyValues*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="state_change">
+        <callback name="state_change" c:type="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="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="visible_data_changed">
+        <callback name="visible_data_changed" c:type="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"
+                  c:type="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="any" c:type="gpointer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_attributes">
+        <callback name="get_attributes" c:type="get_attributes">
+          <return-value transfer-ownership="full">
+            <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: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">
+        <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"
+              doc="object type
+Provides an #AtkObject that implements an accessibility interface
+on behalf of @obj
+on behalf of @obj">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="obj" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="invalidate"
+              c:identifier="atk_object_factory_invalidate"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_accessible_type"
+              c:identifier="atk_object_factory_get_accessible_type"
+              doc="Gets the GType of the accessible which is created by the factory.
+The value G_TYPE_INVALID is returned if no type if found.">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </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">
+        <callback name="create_accessible" c:type="create_accessible">
+          <return-value transfer-ownership="full">
+            <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" c:type="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" c:type="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:type="AtkPlug"
+           parent="Object"
+           glib:type-name="AtkPlug"
+           glib:get-type="atk_plug_get_type"
+           glib:type-struct="PlugClass">
+      <constructor name="new" c:identifier="atk_plug_new">
+        <return-value transfer-ownership="full">
+          <type name="Plug" 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" c:type="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">
+      <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="PropertyValues" c:type="AtkPropertyValues*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="PropertyValues" c:type="_AtkPropertyValues">
+    </record>
+    <record name="Rectangle"
+            c:type="AtkRectangle"
+            glib:type-name="AtkRectangle"
+            glib:get-type="atk_rectangle_get_type">
+      <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="width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+    </record>
+    <class name="Registry"
+           c:type="AtkRegistry"
+           parent="GObject.Object"
+           glib:type-name="AtkRegistry"
+           glib:get-type="atk_registry_get_type"
+           glib:type-struct="RegistryClass">
+      <method name="set_factory_type"
+              c:identifier="atk_registry_set_factory_type"
+              doc="implement AtkObject appropriate for @type.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="factory_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_factory_type"
+              c:identifier="atk_registry_get_factory_type"
+              doc="subclass
+Provides a #GType indicating the #AtkObjectFactory subclass
+associated with @type.">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_factory"
+              c:identifier="atk_registry_get_factory"
+              doc="Gets an #AtkObjectFactory appropriate for creating #AtkObjects
+appropriate for @type.
+appropriate for @type.">
+        <return-value transfer-ownership="full">
+          <type name="ObjectFactory" c:type="AtkObjectFactory*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <record name="RegistryClass"
+            c:type="_AtkRegistryClass"
+            glib:is-gtype-struct-for="Registry">
+    </record>
+    <class name="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="#AtkRelation
+Create a new relation for the specified key and the specified list
+of targets.  See also atk_object_add_relationship().">
+        <return-value transfer-ownership="full">
+          <type name="Relation" c:type="AtkRelation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <type name="Object" c:type="AtkObject**"/>
+          </parameter>
+          <parameter name="n_targets" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="relationship" transfer-ownership="none">
+            <type name="RelationType" c:type="AtkRelationType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="type_register"
+                c:identifier="atk_relation_type_register"
+                doc="Associate @name with a new #AtkRelationType">
+        <return-value transfer-ownership="full">
+          <type name="RelationType" c:type="AtkRelationType"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="type_get_name"
+                c:identifier="atk_relation_type_get_name"
+                doc="Gets the description string describing the #AtkRelationType @type.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="RelationType" c:type="AtkRelationType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="type_for_name"
+                c:identifier="atk_relation_type_for_name"
+                doc="Get the #AtkRelationType type corresponding to a relation name.
+or #ATK_RELATION_NULL if no matching relation type is found.">
+        <return-value transfer-ownership="full">
+          <type name="RelationType" c:type="AtkRelationType"/>
+        </return-value>
+        <parameters>
+          <parameter name="name"
+                     transfer-ownership="none"
+                     doc="name of an ATK relation type.">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_relation_type"
+              c:identifier="atk_relation_get_relation_type"
+              doc="Gets the type of @relation">
+        <return-value transfer-ownership="full">
+          <type name="RelationType" c:type="AtkRelationType"/>
+        </return-value>
+      </method>
+      <method name="get_target"
+              c:identifier="atk_relation_get_target"
+              doc="Gets the target list of @relation">
+        <return-value transfer-ownership="full">
+          <type name="GLib.PtrArray" c:type="GPtrArray*"/>
+        </return-value>
+      </method>
+      <method name="add_target"
+              c:identifier="atk_relation_add_target"
+              doc="Adds the specified AtkObject to the target for the relation, if it is
+not already present.  See also atk_object_add_relationship()."
+              version="1.9">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_target"
+              c:identifier="atk_relation_remove_target"
+              doc="Remove the specified AtkObject from the target for the relation.
+Returns TRUE if the removal is successful.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="relation-type" writable="1">
+        <type name="RelationType" c:type="AtkRelationType"/>
+      </property>
+      <property name="target" writable="1">
+        <type name="GObject.ValueArray" c:type="GValueArray"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="target">
+        <type name="GLib.PtrArray" c:type="GPtrArray*"/>
+      </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: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="Creates a new empty relation set.">
+        <return-value transfer-ownership="full">
+          <type name="RelationSet" c:type="AtkRelationSet*"/>
+        </return-value>
+      </constructor>
+      <method name="contains"
+              c:identifier="atk_relation_set_contains"
+              doc="Determines whether the relation set contains a relation that matches the
+specified type.
+in @set, %FALSE otherwise">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="relationship" transfer-ownership="none">
+            <type name="RelationType" c:type="AtkRelationType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="atk_relation_set_remove"
+              doc="Removes a relation from the relation set.
+This function unref&apos;s the #AtkRelation so it will be deleted unless there
+is another reference to it.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="relation" transfer-ownership="none">
+            <type name="Relation" c:type="AtkRelation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add"
+              c:identifier="atk_relation_set_add"
+              doc="Add a new relation to the current relation set if it is not already
+present.
+This function ref&apos;s the AtkRelation so the caller of this function
+should unref it to ensure that it will be destroyed when the AtkRelationSet
+is destroyed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="relation" transfer-ownership="none">
+            <type name="Relation" c:type="AtkRelation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_relations"
+              c:identifier="atk_relation_set_get_n_relations"
+              doc="Determines the number of relations in a relation set.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_relation" c:identifier="atk_relation_set_get_relation">
+        <return-value transfer-ownership="full">
+          <type name="Relation" c:type="AtkRelation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_relation_by_type"
+              c:identifier="atk_relation_set_get_relation_by_type"
+              doc="Finds a relation that matches the specified type.">
+        <return-value transfer-ownership="full">
+          <type name="Relation" c:type="AtkRelation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="relationship" transfer-ownership="none">
+            <type name="RelationType" c:type="AtkRelationType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_relation_by_type"
+              c:identifier="atk_relation_set_add_relation_by_type"
+              doc="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."
+              version="1.9">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="relationship" transfer-ownership="none">
+            <type name="RelationType" c:type="AtkRelationType"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="relations">
+        <type name="GLib.PtrArray" c:type="GPtrArray*"/>
+      </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: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">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="clear_selection" invoker="clear_selection">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="ref_selection" invoker="ref_selection">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_selection_count" invoker="get_selection_count">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="is_child_selected" invoker="is_child_selected">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_selection" invoker="remove_selection">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="select_all_selection"
+                      invoker="select_all_selection">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <method name="add_selection"
+              c:identifier="atk_selection_add_selection"
+              doc="Adds the specified accessible child of the object to the
+object&apos;s selection.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_selection"
+              c:identifier="atk_selection_clear_selection"
+              doc="Clears the selection in the object so that no children in the object
+are selected.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="ref_selection"
+              c:identifier="atk_selection_ref_selection"
+              doc="ith selection as opposed to the ith child).
+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.">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selection_count"
+              c:identifier="atk_selection_get_selection_count"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="is_child_selected"
+              c:identifier="atk_selection_is_child_selected"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_selection"
+              c:identifier="atk_selection_remove_selection"
+              doc="ith selection as opposed to the ith child).
+Removes the specified child of the object from the object&apos;s selection.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_all_selection"
+              c:identifier="atk_selection_select_all_selection"
+              doc="Causes every child of the object to be selected if the object
+supports multiple selections.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <glib:signal name="selection-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="add_selection">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clear_selection">
+        <callback name="clear_selection" c:type="clear_selection">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+        <callback name="ref_selection" c:type="ref_selection">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_selection_count">
+        <callback name="get_selection_count" c:type="get_selection_count">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="is_child_selected">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_selection">
+        <callback name="remove_selection" c:type="remove_selection">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_all_selection">
+        <callback name="select_all_selection" c:type="select_all_selection">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="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:type="AtkSocket"
+           parent="Object"
+           glib:type-name="AtkSocket"
+           glib:get-type="atk_socket_get_type"
+           glib:type-struct="SocketClass">
+      <constructor name="new" c:identifier="atk_socket_new">
+        <return-value transfer-ownership="full">
+          <type name="Socket" c:type="AtkObject*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="embed" invoker="embed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="plug_id" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="embed"
+              c:identifier="atk_socket_embed"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="plug_id" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_occupied"
+              c:identifier="atk_socket_is_occupied"
+              doc="Determines whether or not the socket has an embedded plug.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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" c:type="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="full">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="StateSet"
+           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="Creates a new empty state set.">
+        <return-value transfer-ownership="full">
+          <type name="StateSet" c:type="AtkStateSet*"/>
+        </return-value>
+      </constructor>
+      <method name="is_empty"
+              c:identifier="atk_state_set_is_empty"
+              doc="Checks whether the state set is empty, i.e. has no states set.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="add_state"
+              c:identifier="atk_state_set_add_state"
+              doc="Add a new state for the specified type to the current state set if
+it is not already present.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="StateType" c:type="AtkStateType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_states"
+              c:identifier="atk_state_set_add_states"
+              doc="Add the states for the specified types to the current state set.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="types" transfer-ownership="none">
+            <type name="StateType" c:type="AtkStateType*"/>
+          </parameter>
+          <parameter name="n_types" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_states"
+              c:identifier="atk_state_set_clear_states"
+              doc="Removes all states from the state set.">
+        <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="Checks whether the state for the specified type is in the specified set.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="StateType" c:type="AtkStateType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="contains_states"
+              c:identifier="atk_state_set_contains_states"
+              doc="Checks whether the states for all the specified types are in the
+specified set.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="types" transfer-ownership="none">
+            <type name="StateType" c:type="AtkStateType*"/>
+          </parameter>
+          <parameter name="n_types" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_state"
+              c:identifier="atk_state_set_remove_state"
+              doc="Removes the state for the specified type from the state set.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="StateType" c:type="AtkStateType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="and_sets"
+              c:identifier="atk_state_set_and_sets"
+              doc="Constructs the intersection of the two sets, returning %NULL if the
+intersection is empty.">
+        <return-value transfer-ownership="full">
+          <type name="StateSet" c:type="AtkStateSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="compare_set" transfer-ownership="none">
+            <type name="StateSet" c:type="AtkStateSet*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="or_sets"
+              c:identifier="atk_state_set_or_sets"
+              doc="Constructs the union of the two sets.
+returning %NULL is empty.">
+        <return-value transfer-ownership="full">
+          <type name="StateSet" c:type="AtkStateSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="compare_set" transfer-ownership="none">
+            <type name="StateSet" c:type="AtkStateSet*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="xor_sets"
+              c:identifier="atk_state_set_xor_sets"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="StateSet" c:type="AtkStateSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="compare_set" transfer-ownership="none">
+            <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:type="AtkStreamableContent"
+               glib:type-name="AtkStreamableContent"
+               glib:get-type="atk_streamable_content_get_type"
+               glib:type-struct="StreamableContentIface">
+      <virtual-method name="get_n_mime_types" invoker="get_n_mime_types">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_mime_type" invoker="get_mime_type">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_stream" invoker="get_stream">
+        <return-value transfer-ownership="full">
+          <type name="GLib.IOChannel" c:type="GIOChannel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mime_type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_uri" invoker="get_uri">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mime_type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_n_mime_types"
+              c:identifier="atk_streamable_content_get_n_mime_types"
+              doc="Gets the number of mime types supported by this object.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_mime_type"
+              c:identifier="atk_streamable_content_get_mime_type"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="i" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_stream"
+              c:identifier="atk_streamable_content_get_stream"
+              doc="Gets the content in the specified mime type.
+type.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.IOChannel" c:type="GIOChannel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mime_type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uri"
+              c:identifier="atk_streamable_content_get_uri"
+              doc="for the default mime type.
+Get a string representing a URI in IETF standard format
+(see http://www.ietf.org/rfc/rfc2396.txt) from which the object&apos;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."
+              version="1.12">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mime_type" transfer-ownership="none">
+            <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" c:type="get_n_mime_types">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_stream">
+        <callback name="get_stream" c:type="get_stream">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </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="streamable" transfer-ownership="none">
+              <type name="StreamableContent" c:type="AtkStreamableContent*"/>
+            </parameter>
+            <parameter name="mime_type" 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>
+    </record>
+    <interface name="Table"
+               c:type="AtkTable"
+               glib:type-name="AtkTable"
+               glib:get-type="atk_table_get_type"
+               glib:type-struct="TableIface">
+      <virtual-method name="ref_at" invoker="ref_at">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_index_at" invoker="get_index_at">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_column_at_index" invoker="get_column_at_index">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_row_at_index" invoker="get_row_at_index">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_n_columns" invoker="get_n_columns">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_n_rows" invoker="get_n_rows">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_column_extent_at"
+                      invoker="get_column_extent_at">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_row_extent_at" invoker="get_row_extent_at">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_caption" invoker="get_caption">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_column_description"
+                      invoker="get_column_description">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_column_header" invoker="get_column_header">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_row_description" invoker="get_row_description">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_row_header" invoker="get_row_header">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_summary" invoker="get_summary">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_caption" invoker="set_caption">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caption" transfer-ownership="none">
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_column_description"
+                      invoker="set_column_description">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_column_header" invoker="set_column_header">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="header" transfer-ownership="none">
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_row_description" invoker="set_row_description">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_row_header" invoker="set_row_header">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="header" transfer-ownership="none">
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_summary" invoker="set_summary">
+        <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>
+      </virtual-method>
+      <virtual-method name="get_selected_columns"
+                      invoker="get_selected_columns">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="selected" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_selected_rows" invoker="get_selected_rows">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="selected" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="is_column_selected" invoker="is_column_selected">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="is_row_selected" invoker="is_row_selected">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="is_selected" invoker="is_selected">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="add_row_selection" invoker="add_row_selection">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_row_selection"
+                      invoker="remove_row_selection">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="add_column_selection"
+                      invoker="add_column_selection">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_column_selection"
+                      invoker="remove_column_selection">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="ref_at"
+              c:identifier="atk_table_ref_at"
+              doc="Get a reference to the table cell at @row, @column.">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_index_at"
+              c:identifier="atk_table_get_index_at"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_at_index"
+              c:identifier="atk_table_get_column_at_index"
+              doc="Gets a #gint representing the column at the specified @index_.
+or -1 if the table does not implement this interface">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_at_index"
+              c:identifier="atk_table_get_row_at_index"
+              doc="Gets a #gint representing the row at the specified @index_.
+or -1 if the table does not implement this interface">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_columns"
+              c:identifier="atk_table_get_n_columns"
+              doc="Gets the number of columns in the table.
+if value does not implement this interface.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_n_rows"
+              c:identifier="atk_table_get_n_rows"
+              doc="Gets the number of rows in the table.
+if value does not implement this interface.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_column_extent_at"
+              c:identifier="atk_table_get_column_extent_at"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_extent_at"
+              c:identifier="atk_table_get_row_extent_at"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_caption"
+              c:identifier="atk_table_get_caption"
+              doc="Gets the caption for the @table.
+if value does not implement this interface.">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+      </method>
+      <method name="get_column_description"
+              c:identifier="atk_table_get_column_description"
+              doc="Gets the description text of the specified @column in the table
+if value does not implement this interface.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_header"
+              c:identifier="atk_table_get_column_header"
+              doc="Gets the column header of a specified column in an accessible table.
+%NULL if value does not implement this interface.">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_description"
+              c:identifier="atk_table_get_row_description"
+              doc="Gets the description text of the specified row in the table
+if value does not implement this interface.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_header"
+              c:identifier="atk_table_get_row_header"
+              doc="Gets the row header of a specified row in an accessible table.
+%NULL if value does not implement this interface.">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_summary"
+              c:identifier="atk_table_get_summary"
+              doc="Gets the summary description of the table.
+or zero if value does not implement this interface.">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="AtkObject*"/>
+        </return-value>
+      </method>
+      <method name="set_caption"
+              c:identifier="atk_table_set_caption"
+              doc="Sets the caption for the table.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caption" transfer-ownership="none">
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_description"
+              c:identifier="atk_table_set_column_description"
+              doc="to set for the specified @column of the @table
+Sets the description text for the specified @column of the @table.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_header"
+              c:identifier="atk_table_set_column_header"
+              doc="Sets the specified column header to @header.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="header" transfer-ownership="none">
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_description"
+              c:identifier="atk_table_set_row_description"
+              doc="to set for the specified @row of @table
+Sets the description text for the specified @row of @table.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_header"
+              c:identifier="atk_table_set_row_header"
+              doc="Sets the specified row header to @header.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="header" transfer-ownership="none">
+            <type name="Object" c:type="AtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_summary"
+              c:identifier="atk_table_set_summary"
+              doc="to set for @table
+Sets the summary description of the table.">
+        <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>
+      </method>
+      <method name="get_selected_columns"
+              c:identifier="atk_table_get_selected_columns"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="selected" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selected_rows"
+              c:identifier="atk_table_get_selected_rows"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="selected" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_column_selected"
+              c:identifier="atk_table_is_column_selected"
+              doc="Gets a boolean value indicating whether the specified @column
+is selected
+if value does not implement this interface.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_row_selected"
+              c:identifier="atk_table_is_row_selected"
+              doc="Gets a boolean value indicating whether the specified @row
+is selected
+if value does not implement this interface.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_selected"
+              c:identifier="atk_table_is_selected"
+              doc="Gets a boolean value indicating whether the accessible object
+at the specified @row and @column is selected
+if value does not implement this interface.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_row_selection"
+              c:identifier="atk_table_add_row_selection"
+              doc="Adds the specified @row to the selection.
+or 0 if value does not implement this interface.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_row_selection"
+              c:identifier="atk_table_remove_row_selection"
+              doc="Removes the specified @row from the selection.
+the selection, or 0 if value does not implement this interface.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_column_selection"
+              c:identifier="atk_table_add_column_selection"
+              doc="Adds the specified @column to the selection.
+the selection, or 0 if value does not implement this interface.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_column_selection"
+              c:identifier="atk_table_remove_column_selection"
+              doc="Adds the specified @column to the selection.
+the selection, or 0 if value does not implement this interface.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="column-deleted">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="column-inserted">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="column-reordered">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="model-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="row-deleted">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-inserted">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-reordered">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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">
+        <callback name="ref_at" c:type="ref_at">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_index_at">
+        <callback name="get_index_at" c:type="get_index_at">
+          <return-value transfer-ownership="none">
+            <type name="int" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_column_at_index">
+        <callback name="get_column_at_index" c:type="get_column_at_index">
+          <return-value transfer-ownership="none">
+            <type name="int" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_row_at_index">
+        <callback name="get_row_at_index" c:type="get_row_at_index">
+          <return-value transfer-ownership="none">
+            <type name="int" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_n_columns">
+        <callback name="get_n_columns" c:type="get_n_columns">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="get_n_rows">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="get_column_extent_at">
+          <return-value transfer-ownership="none">
+            <type name="int" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_row_extent_at">
+        <callback name="get_row_extent_at" c:type="get_row_extent_at">
+          <return-value transfer-ownership="none">
+            <type name="int" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_caption">
+        <callback name="get_caption" c:type="get_caption">
+          <return-value transfer-ownership="full">
+            <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"
+                  c:type="get_column_description">
+          <return-value transfer-ownership="none">
+            <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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_column_header">
+        <callback name="get_column_header" c:type="get_column_header">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_row_description">
+        <callback name="get_row_description" c:type="get_row_description">
+          <return-value transfer-ownership="none">
+            <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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_row_header">
+        <callback name="get_row_header" c:type="get_row_header">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_summary">
+        <callback name="get_summary" c:type="get_summary">
+          <return-value transfer-ownership="full">
+            <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" c:type="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">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_column_description">
+        <callback name="set_column_description"
+                  c:type="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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="description" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_column_header">
+        <callback name="set_column_header" c:type="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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="header" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_row_description">
+        <callback name="set_row_description" c:type="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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="description" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_row_header">
+        <callback name="set_row_header" c:type="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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="header" transfer-ownership="none">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_summary">
+        <callback name="set_summary" c:type="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">
+              <type name="Object" c:type="AtkObject*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_selected_columns">
+        <callback name="get_selected_columns" c:type="get_selected_columns">
+          <return-value transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="selected"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_selected_rows">
+        <callback name="get_selected_rows" c:type="get_selected_rows">
+          <return-value transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="table" transfer-ownership="none">
+              <type name="Table" c:type="AtkTable*"/>
+            </parameter>
+            <parameter name="selected"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_column_selected">
+        <callback name="is_column_selected" c:type="is_column_selected">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_row_selected">
+        <callback name="is_row_selected" c:type="is_row_selected">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_selected">
+        <callback name="is_selected" c:type="is_selected">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_row_selection">
+        <callback name="add_row_selection" c:type="add_row_selection">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_row_selection">
+        <callback name="remove_row_selection" c:type="remove_row_selection">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_column_selection">
+        <callback name="add_column_selection" c:type="add_column_selection">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_column_selection">
+        <callback name="remove_column_selection"
+                  c:type="remove_column_selection">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_inserted">
+        <callback name="row_inserted" c:type="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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="num_inserted" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="column_inserted">
+        <callback name="column_inserted" c:type="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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="num_inserted" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_deleted">
+        <callback name="row_deleted" c:type="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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="num_deleted" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="column_deleted">
+        <callback name="column_deleted" c:type="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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="num_deleted" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_reordered">
+        <callback name="row_reordered" c:type="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" c:type="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" c:type="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:type="AtkText"
+               glib:type-name="AtkText"
+               glib:get-type="atk_text_get_type"
+               glib:type-struct="TextIface">
+      <virtual-method name="get_text" invoker="get_text">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_text_after_offset"
+                      invoker="get_text_after_offset">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="boundary_type" transfer-ownership="none">
+            <type name="TextBoundary" c:type="AtkTextBoundary"/>
+          </parameter>
+          <parameter name="start_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_text_at_offset" invoker="get_text_at_offset">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="boundary_type" transfer-ownership="none">
+            <type name="TextBoundary" c:type="AtkTextBoundary"/>
+          </parameter>
+          <parameter name="start_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_character_at_offset"
+                      invoker="get_character_at_offset">
+        <return-value transfer-ownership="full">
+          <type name="GLib.unichar" c:type="gunichar"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_text_before_offset"
+                      invoker="get_text_before_offset">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="boundary_type" transfer-ownership="none">
+            <type name="TextBoundary" c:type="AtkTextBoundary"/>
+          </parameter>
+          <parameter name="start_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_caret_offset" invoker="get_caret_offset">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_run_attributes" invoker="get_run_attributes">
+        <return-value transfer-ownership="full">
+          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="start_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_default_attributes"
+                      invoker="get_default_attributes">
+        <return-value transfer-ownership="full">
+          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_character_extents"
+                      invoker="get_character_extents">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </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>
+          <parameter name="coords" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_character_count" invoker="get_character_count">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_offset_at_point" invoker="get_offset_at_point">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </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="coords" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_n_selections" invoker="get_n_selections">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_selection" invoker="get_selection">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection_num" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="start_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="add_selection" invoker="add_selection">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_selection" invoker="remove_selection">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection_num" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_selection" invoker="set_selection">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection_num" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="start_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_caret_offset" invoker="set_caret_offset">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_range_extents" invoker="get_range_extents">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+          <parameter name="rect" transfer-ownership="none">
+            <type name="TextRectangle" c:type="AtkTextRectangle*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_bounded_ranges" invoker="get_bounded_ranges">
+        <return-value transfer-ownership="full">
+          <type name="TextRange" c:type="AtkTextRange**"/>
+        </return-value>
+        <parameters>
+          <parameter name="rect" transfer-ownership="none">
+            <type name="TextRectangle" c:type="AtkTextRectangle*"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+          <parameter name="x_clip_type" transfer-ownership="none">
+            <type name="TextClipType" c:type="AtkTextClipType"/>
+          </parameter>
+          <parameter name="y_clip_type" transfer-ownership="none">
+            <type name="TextClipType" c:type="AtkTextClipType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_text"
+              c:identifier="atk_text_get_text"
+              doc="Gets the specified text.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_character_at_offset"
+              c:identifier="atk_text_get_character_at_offset"
+              doc="Gets the specified text.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.unichar" c:type="gunichar"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text_after_offset"
+              c:identifier="atk_text_get_text_after_offset"
+              doc="returned substring
+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.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="boundary_type" transfer-ownership="none">
+            <type name="TextBoundary" c:type="AtkTextBoundary"/>
+          </parameter>
+          <parameter name="start_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text_at_offset"
+              c:identifier="atk_text_get_text_at_offset"
+              doc="returned substring
+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.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="boundary_type" transfer-ownership="none">
+            <type name="TextBoundary" c:type="AtkTextBoundary"/>
+          </parameter>
+          <parameter name="start_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text_before_offset"
+              c:identifier="atk_text_get_text_before_offset"
+              doc="returned substring
+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.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="boundary_type" transfer-ownership="none">
+            <type name="TextBoundary" c:type="AtkTextBoundary"/>
+          </parameter>
+          <parameter name="start_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_caret_offset"
+              c:identifier="atk_text_get_caret_offset"
+              doc="Gets the offset position of the caret (cursor).">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_character_extents"
+              c:identifier="atk_text_get_character_extents"
+              doc="Get the bounding box containing the glyph representing the character at
+a particular text offset.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </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>
+          <parameter name="coords" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_run_attributes"
+              c:identifier="atk_text_get_run_attributes">
+        <return-value transfer-ownership="full">
+          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="start_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_attributes"
+              c:identifier="atk_text_get_default_attributes">
+        <return-value transfer-ownership="full">
+          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+        </return-value>
+      </method>
+      <method name="get_character_count"
+              c:identifier="atk_text_get_character_count"
+              doc="Gets the character count.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_offset_at_point"
+              c:identifier="atk_text_get_offset_at_point"
+              doc="widget window
+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&apos;s window
+depending on @coords.
+the specified @x and @y coordinates.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </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="coords" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_selections"
+              c:identifier="atk_text_get_n_selections"
+              doc="Gets the number of selected regions.
+occurred.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_selection"
+              c:identifier="atk_text_get_selection"
+              doc="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.
+the selected region
+Gets the text from the specified selection.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection_num" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="start_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_selection"
+              c:identifier="atk_text_add_selection"
+              doc="Adds a selection bounded by the specified offsets.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_selection"
+              c:identifier="atk_text_remove_selection"
+              doc="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.
+Removes the specified selection.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection_num" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_selection"
+              c:identifier="atk_text_set_selection"
+              doc="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.
+the selection
+Changes the start and end offset of the specified selection.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection_num" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="start_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_caret_offset"
+              c:identifier="atk_text_set_caret_offset"
+              doc="Sets the caret (cursor) position to the specified @offset.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_range_extents"
+              c:identifier="atk_text_get_range_extents"
+              doc="information is required.
+for which boundary information is required.
+Get the bounding box for text within the specified range."
+              version="1.3">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+          <parameter name="rect" transfer-ownership="none">
+            <type name="TextRectangle" c:type="AtkTextRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bounded_ranges"
+              c:identifier="atk_text_get_bounded_ranges"
+              doc="Get the ranges of text in the specified bounding box.
+by this function will be NULL."
+              version="1.3">
+        <return-value transfer-ownership="full">
+          <type name="TextRange" c:type="AtkTextRange**"/>
+        </return-value>
+        <parameters>
+          <parameter name="rect" transfer-ownership="none">
+            <type name="TextRectangle" c:type="AtkTextRectangle*"/>
+          </parameter>
+          <parameter name="coord_type" transfer-ownership="none">
+            <type name="CoordType" c:type="AtkCoordType"/>
+          </parameter>
+          <parameter name="x_clip_type" transfer-ownership="none">
+            <type name="TextClipType" c:type="AtkTextClipType"/>
+          </parameter>
+          <parameter name="y_clip_type" transfer-ownership="none">
+            <type name="TextClipType" c:type="AtkTextClipType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="text-attributes-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="text-caret-moved">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="text-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="text-selection-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="get_text">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="end_offset" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_text_after_offset">
+        <callback name="get_text_after_offset" c:type="get_text_after_offset">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="boundary_type" transfer-ownership="none">
+              <type name="TextBoundary" c:type="AtkTextBoundary"/>
+            </parameter>
+            <parameter name="start_offset"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="end_offset"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_text_at_offset">
+        <callback name="get_text_at_offset" c:type="get_text_at_offset">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="boundary_type" transfer-ownership="none">
+              <type name="TextBoundary" c:type="AtkTextBoundary"/>
+            </parameter>
+            <parameter name="start_offset"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="end_offset"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_character_at_offset">
+        <callback name="get_character_at_offset"
+                  c:type="get_character_at_offset">
+          <return-value transfer-ownership="full">
+            <type name="GLib.unichar" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_text_before_offset">
+        <callback name="get_text_before_offset"
+                  c:type="get_text_before_offset">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="boundary_type" transfer-ownership="none">
+              <type name="TextBoundary" c:type="AtkTextBoundary"/>
+            </parameter>
+            <parameter name="start_offset"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="end_offset"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_caret_offset">
+        <callback name="get_caret_offset" c:type="get_caret_offset">
+          <return-value transfer-ownership="none">
+            <type name="int" 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">
+        <callback name="get_run_attributes" c:type="get_run_attributes">
+          <return-value transfer-ownership="full">
+            <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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="start_offset"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="end_offset"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_default_attributes">
+        <callback name="get_default_attributes"
+                  c:type="get_default_attributes">
+          <return-value transfer-ownership="full">
+            <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" c:type="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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="x" direction="out" transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="y" direction="out" transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </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>
+            <parameter name="coords" transfer-ownership="none">
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_character_count">
+        <callback name="get_character_count" c:type="get_character_count">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="get_offset_at_point">
+          <return-value transfer-ownership="none">
+            <type name="int" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="coords" transfer-ownership="none">
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_n_selections">
+        <callback name="get_n_selections" c:type="get_n_selections">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="get_selection">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="start_offset"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="end_offset"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_selection">
+        <callback name="add_selection" c:type="add_selection">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="end_offset" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_selection">
+        <callback name="remove_selection" c:type="remove_selection">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_selection">
+        <callback name="set_selection" c:type="set_selection">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="start_offset" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="end_offset" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_caret_offset">
+        <callback name="set_caret_offset" c:type="set_caret_offset">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="text_changed">
+        <callback name="text_changed" c:type="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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="length" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="text_caret_moved">
+        <callback name="text_caret_moved" c:type="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="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="text_selection_changed">
+        <callback name="text_selection_changed"
+                  c:type="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"
+                  c:type="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" c:type="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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="end_offset" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="coord_type" transfer-ownership="none">
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+            <parameter name="rect" transfer-ownership="none">
+              <type name="TextRectangle" c:type="AtkTextRectangle*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_bounded_ranges">
+        <callback name="get_bounded_ranges" c:type="get_bounded_ranges">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="TextRectangle" c:type="AtkTextRectangle*"/>
+            </parameter>
+            <parameter name="coord_type" transfer-ownership="none">
+              <type name="CoordType" c:type="AtkCoordType"/>
+            </parameter>
+            <parameter name="x_clip_type" transfer-ownership="none">
+              <type name="TextClipType" c:type="AtkTextClipType"/>
+            </parameter>
+            <parameter name="y_clip_type" transfer-ownership="none">
+              <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="A structure used to describe a text range.">
+      <field name="bounds" writable="1">
+        <type name="TextRectangle" c:type="AtkTextRectangle"/>
+      </field>
+      <field name="start_offset" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="end_offset" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="content" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <record name="TextRectangle"
+            c:type="AtkTextRectangle"
+            doc="A structure used to store a rectangle used by AtkText.">
+      <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="width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+    </record>
+    <class name="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">
+        <callback name="add_global_event_listener"
+                  c:type="add_global_event_listener">
+          <return-value transfer-ownership="none">
+            <type name="uint" 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"
+                  c:type="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="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_key_event_listener">
+        <callback name="add_key_event_listener"
+                  c:type="add_key_event_listener">
+          <return-value transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </return-value>
+          <parameters>
+            <parameter name="listener" transfer-ownership="none">
+              <type name="KeySnoopFunc" c:type="AtkKeySnoopFunc"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_key_event_listener">
+        <callback name="remove_key_event_listener"
+                  c:type="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="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_root">
+        <callback name="get_root" c:type="get_root">
+          <return-value transfer-ownership="full">
+            <type name="Object" c:type="AtkObject*"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="get_toolkit_name">
+        <callback name="get_toolkit_name" c:type="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" c:type="get_toolkit_version">
+          <return-value transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <interface name="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">
+        <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>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_maximum_value" invoker="get_maximum_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>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_minimum_value" invoker="get_minimum_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>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_current_value" invoker="set_current_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>
+      </virtual-method>
+      <virtual-method name="get_minimum_increment"
+                      invoker="get_minimum_increment">
+        <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>
+        </parameters>
+      </virtual-method>
+      <method name="get_current_value"
+              c:identifier="atk_value_get_current_value"
+              doc="Gets the value of this object.">
+        <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>
+        </parameters>
+      </method>
+      <method name="get_maximum_value"
+              c:identifier="atk_value_get_maximum_value"
+              doc="Gets the maximum value of this object.">
+        <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>
+        </parameters>
+      </method>
+      <method name="get_minimum_value"
+              c:identifier="atk_value_get_minimum_value"
+              doc="Gets the minimum value of this object.">
+        <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>
+        </parameters>
+      </method>
+      <method name="set_current_value"
+              c:identifier="atk_value_set_current_value"
+              doc="Sets the value of this object.">
+        <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>
+      </method>
+      <method name="get_minimum_increment"
+              c:identifier="atk_value_get_minimum_increment"
+              doc="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."
+              version="1.12">
+        <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>
+        </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" c:type="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">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_maximum_value">
+        <callback name="get_maximum_value" c:type="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">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_minimum_value">
+        <callback name="get_minimum_value" c:type="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">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_current_value">
+        <callback name="set_current_value" c:type="set_current_value">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_minimum_increment">
+        <callback name="get_minimum_increment" c:type="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">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pad1">
+        <type name="Function" c:type="AtkFunction"/>
+      </field>
+    </record>
+    <function name="add_focus_tracker"
+              c:identifier="atk_add_focus_tracker"
+              doc="when an object receives focus.
+Adds the specified function to the list of functions to be called
+when an object receives focus.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="focus_tracker" transfer-ownership="none" scope="call">
+          <type name="EventListener" c:type="AtkEventListener"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="add_global_event_listener"
+              c:identifier="atk_add_global_event_listener"
+              doc="Adds the specified function to the list of functions to be called
+when an event of type event_type occurs.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="listener" transfer-ownership="none" scope="call">
+          <type name="GObject.SignalEmissionHook"
+                c:type="GSignalEmissionHook"/>
+        </parameter>
+        <parameter name="event_type" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="add_key_event_listener"
+              c:identifier="atk_add_key_event_listener"
+              doc="along with the event notification, when it occurs.
+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.">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="listener"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="1">
+          <type name="KeySnoopFunc" c:type="AtkKeySnoopFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attribute_set_free"
+              c:identifier="atk_attribute_set_free"
+              doc="Frees the memory used by an #AtkAttributeSet, including all its
+#AtkAttributes.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="attrib_set" transfer-ownership="none">
+          <type name="AttributeSet" c:type="AtkAttributeSet*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="focus_tracker_init"
+              c:identifier="atk_focus_tracker_init"
+              doc="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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="init" transfer-ownership="none" scope="call">
+          <type name="EventListenerInit" c:type="AtkEventListenerInit"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="focus_tracker_notify"
+              c:identifier="atk_focus_tracker_notify"
+              doc="Cause the focus tracker functions which have been specified to be
+executed for the object.">
+      <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="AtkObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_default_registry"
+              c:identifier="atk_get_default_registry">
+      <return-value transfer-ownership="full">
+        <type name="Registry" c:type="AtkRegistry*"/>
+      </return-value>
+    </function>
+    <function name="get_focus_object"
+              c:identifier="atk_get_focus_object"
+              doc="Gets the currently focused object."
+              version="1.6">
+      <return-value transfer-ownership="full">
+        <type name="Object" c:type="AtkObject*"/>
+      </return-value>
+    </function>
+    <function name="get_root"
+              c:identifier="atk_get_root"
+              doc="Gets the root accessible container for the current application.">
+      <return-value transfer-ownership="full">
+        <type name="Object" c:type="AtkObject*"/>
+      </return-value>
+    </function>
+    <function name="get_toolkit_name"
+              c:identifier="atk_get_toolkit_name"
+              doc="Gets name string for the GUI toolkit implementing ATK for this application.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="get_toolkit_version"
+              c:identifier="atk_get_toolkit_version"
+              doc="Gets version string for the GUI toolkit implementing ATK for this application.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="get_version"
+              c:identifier="atk_get_version"
+              doc="Gets the current version for ATK.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="remove_focus_tracker"
+              c:identifier="atk_remove_focus_tracker"
+              doc="Removes the specified focus tracker from the list of functions
+to be called when any object receives focus.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tracker_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="remove_global_event_listener"
+              c:identifier="atk_remove_global_event_listener"
+              doc="Removes the specified 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="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="remove_key_event_listener"
+              c:identifier="atk_remove_key_event_listener"
+              doc="Removes the specified 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="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="role_for_name"
+              c:identifier="atk_role_for_name"
+              doc="Get the #AtkRole type corresponding to a rolew name.
+me,
+or #ATK_ROLE_INVALID if no matching role is found.">
+      <return-value transfer-ownership="full">
+        <type name="Role" c:type="AtkRole"/>
+      </return-value>
+      <parameters>
+        <parameter name="name"
+                   transfer-ownership="none"
+                   doc="name of an ATK role.">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="role_get_localized_name"
+              c:identifier="atk_role_get_localized_name"
+              doc="Gets the localized description string describing the #AtkRole @role.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="role" transfer-ownership="none">
+          <type name="Role" c:type="AtkRole"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="role_get_name"
+              c:identifier="atk_role_get_name"
+              doc="Gets the description string describing the #AtkRole @role.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="role" transfer-ownership="none">
+          <type name="Role" c:type="AtkRole"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="role_register"
+              c:identifier="atk_role_register"
+              doc="Registers the role specified by @name.">
+      <return-value transfer-ownership="full">
+        <type name="Role" c:type="AtkRole"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="state_type_for_name"
+              c:identifier="atk_state_type_for_name"
+              doc="Gets the #AtkStateType corresponding to the description string @name.">
+      <return-value transfer-ownership="full">
+        <type name="StateType" c:type="AtkStateType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="state_type_get_name"
+              c:identifier="atk_state_type_get_name"
+              doc="Gets the description string describing the #AtkStateType @type.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="StateType" c:type="AtkStateType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="state_type_register"
+              c:identifier="atk_state_type_register"
+              doc="Register a new object state.">
+      <return-value transfer-ownership="full">
+        <type name="StateType" c:type="AtkStateType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_attribute_for_name"
+              c:identifier="atk_text_attribute_for_name"
+              doc="Get the #AtkTextAttribute type corresponding to a text attribute name.
+me,
+or #ATK_TEXT_ATTRIBUTE_INVALID if no matching text attribute is found.">
+      <return-value transfer-ownership="full">
+        <type name="TextAttribute" c:type="AtkTextAttribute"/>
+      </return-value>
+      <parameters>
+        <parameter name="name"
+                   transfer-ownership="none"
+                   doc="name of an ATK text attribute.">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_attribute_get_name"
+              c:identifier="atk_text_attribute_get_name"
+              doc="Gets the name corresponding to the #AtkTextAttribute">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="attr" transfer-ownership="none">
+          <type name="TextAttribute" c:type="AtkTextAttribute"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_attribute_get_value"
+              c:identifier="atk_text_attribute_get_value"
+              doc="Gets the value for the index of the #AtkTextAttribute
+NULL is returned if there are no values maintained for the attr value.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="attr" transfer-ownership="none">
+          <type name="TextAttribute" c:type="AtkTextAttribute"/>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_attribute_register"
+              c:identifier="atk_text_attribute_register"
+              doc="Associate @name with a new #AtkTextAttribute">
+      <return-value transfer-ownership="full">
+        <type name="TextAttribute" c:type="AtkTextAttribute"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_free_ranges"
+              c:identifier="atk_text_free_ranges"
+              doc="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."
+              version="1.3">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ranges" transfer-ownership="none">
+          <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..c03b639
--- /dev/null
@@ -0,0 +1,12 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien.syntax
+gir glib gobject glib.ffi ;
+
+IN: atk.ffi
+
+TYPEDEF: guint64 AtkState
+TYPEDEF: GSList AtkAttributeSet
+
+IN-GIR: atk vocab:atk/Atk-1.0.gir
+
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/gdk/Gdk-2.0.gir b/basis/gdk/Gdk-2.0.gir
new file mode 100644 (file)
index 0000000..1005087
--- /dev/null
@@ -0,0 +1,22284 @@
+<?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="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="2.0"
+             shared-library="libgdk-x11-2.0.so.0"
+             c:prefix="Gdk">
+    <alias name="NativeWindow" target="uint32" c:type="GdkNativeWindow"/>
+    <alias name="Selection" target="Atom" c:type="GdkSelection"/>
+    <alias name="SelectionType" target="Atom" c:type="GdkSelectionType"/>
+    <alias name="Target" target="Atom" c:type="GdkTarget"/>
+    <alias name="WChar" target="uint32" c:type="GdkWChar"/>
+    <alias name="XEvent" target="none" c:type="GdkXEvent"/>
+    <constant name="0" value="48">
+      <type name="int"/>
+    </constant>
+    <constant name="1" value="49">
+      <type name="int"/>
+    </constant>
+    <constant name="2" value="50">
+      <type name="int"/>
+    </constant>
+    <constant name="3" value="51">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_AltCursor" value="64784">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Attn" value="64782">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_BackTab" value="64773">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_ChangeScreen" value="64793">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Copy" value="64789">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_CursorBlink" value="64783">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_CursorSelect" value="64796">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_DeleteWord" value="64794">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Duplicate" value="64769">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Enter" value="64798">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_EraseEOF" value="64774">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_EraseInput" value="64775">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_ExSelect" value="64795">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_FieldMark" value="64770">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Ident" value="64787">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Jump" value="64786">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_KeyClick" value="64785">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Left2" value="64772">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_PA1" value="64778">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_PA2" value="64779">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_PA3" value="64780">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Play" value="64790">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_PrintScreen" value="64797">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Quit" value="64777">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Record" value="64792">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Reset" value="64776">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Right2" value="64771">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Rule" value="64788">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Setup" value="64791">
+      <type name="int"/>
+    </constant>
+    <constant name="3270_Test" value="64781">
+      <type name="int"/>
+    </constant>
+    <constant name="4" value="52">
+      <type name="int"/>
+    </constant>
+    <constant name="5" value="53">
+      <type name="int"/>
+    </constant>
+    <constant name="6" value="54">
+      <type name="int"/>
+    </constant>
+    <constant name="7" value="55">
+      <type name="int"/>
+    </constant>
+    <constant name="8" value="56">
+      <type name="int"/>
+    </constant>
+    <constant name="9" value="57">
+      <type name="int"/>
+    </constant>
+    <constant name="A" value="65">
+      <type name="int"/>
+    </constant>
+    <constant name="AE" value="198">
+      <type name="int"/>
+    </constant>
+    <constant name="ANY_BUTTON_MASK" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="Aacute" value="193">
+      <type name="int"/>
+    </constant>
+    <constant name="Abelowdot" value="16785056">
+      <type name="int"/>
+    </constant>
+    <constant name="Abreve" value="451">
+      <type name="int"/>
+    </constant>
+    <constant name="Abreveacute" value="16785070">
+      <type name="int"/>
+    </constant>
+    <constant name="Abrevebelowdot" value="16785078">
+      <type name="int"/>
+    </constant>
+    <constant name="Abrevegrave" value="16785072">
+      <type name="int"/>
+    </constant>
+    <constant name="Abrevehook" value="16785074">
+      <type name="int"/>
+    </constant>
+    <constant name="Abrevetilde" value="16785076">
+      <type name="int"/>
+    </constant>
+    <constant name="AccessX_Enable" value="65136">
+      <type name="int"/>
+    </constant>
+    <constant name="AccessX_Feedback_Enable" value="65137">
+      <type name="int"/>
+    </constant>
+    <constant name="Acircumflex" value="194">
+      <type name="int"/>
+    </constant>
+    <constant name="Acircumflexacute" value="16785060">
+      <type name="int"/>
+    </constant>
+    <constant name="Acircumflexbelowdot" value="16785068">
+      <type name="int"/>
+    </constant>
+    <constant name="Acircumflexgrave" value="16785062">
+      <type name="int"/>
+    </constant>
+    <constant name="Acircumflexhook" value="16785064">
+      <type name="int"/>
+    </constant>
+    <constant name="Acircumflextilde" value="16785066">
+      <type name="int"/>
+    </constant>
+    <constant name="AddFavorite" value="269025081">
+      <type name="int"/>
+    </constant>
+    <constant name="Adiaeresis" value="196">
+      <type name="int"/>
+    </constant>
+    <constant name="Agrave" value="192">
+      <type name="int"/>
+    </constant>
+    <constant name="Ahook" value="16785058">
+      <type name="int"/>
+    </constant>
+    <constant name="Alt_L" value="65513">
+      <type name="int"/>
+    </constant>
+    <constant name="Alt_R" value="65514">
+      <type name="int"/>
+    </constant>
+    <constant name="Amacron" value="960">
+      <type name="int"/>
+    </constant>
+    <constant name="Aogonek" value="417">
+      <type name="int"/>
+    </constant>
+    <class name="AppLaunchContext"
+           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"
+                   doc="Creates a new #GdkAppLaunchContext."
+                   version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="AppLaunchContext" c:type="GdkAppLaunchContext*"/>
+        </return-value>
+      </constructor>
+      <method name="set_display"
+              c:identifier="gdk_app_launch_context_set_display"
+              doc="Sets the display on which applications will be launched when
+using this context. See also gdk_app_launch_context_set_screen()."
+              version="2.14">
+        <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>
+        </parameters>
+      </method>
+      <method name="set_screen"
+              c:identifier="gdk_app_launch_context_set_screen"
+              doc="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."
+              version="2.14">
+        <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>
+      </method>
+      <method name="set_desktop"
+              c:identifier="gdk_app_launch_context_set_desktop"
+              doc="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=&quot;http://www.freedesktop.org/Standards/wm-spec&quot;&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."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="desktop" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_timestamp"
+              c:identifier="gdk_app_launch_context_set_timestamp"
+              doc="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 &apos;focus stealing
+prevention&apos;."
+              version="2.14">
+        <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>
+        </parameters>
+      </method>
+      <method name="set_icon"
+              c:identifier="gdk_app_launch_context_set_icon"
+              doc="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()."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GIcon, or %NULL">
+            <type name="Gio.Icon" c:type="GIcon*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_name"
+              c:identifier="gdk_app_launch_context_set_icon_name"
+              doc="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."
+              version="2.14">
+        <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="an icon name, or %NULL">
+            <type name="utf8" c:type="char*"/>
+          </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">
+    </record>
+    <constant name="ApplicationLeft" value="269025104">
+      <type name="int"/>
+    </constant>
+    <constant name="ApplicationRight" value="269025105">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_0" value="16778848">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_1" value="16778849">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_2" value="16778850">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_3" value="16778851">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_4" value="16778852">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_5" value="16778853">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_6" value="16778854">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_7" value="16778855">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_8" value="16778856">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_9" value="16778857">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_ain" value="1497">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_alef" value="1479">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_alefmaksura" value="1513">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_beh" value="1480">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_comma" value="1452">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_dad" value="1494">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_dal" value="1487">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_damma" value="1519">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_dammatan" value="1516">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_ddal" value="16778888">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_farsi_yeh" value="16778956">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_fatha" value="1518">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_fathatan" value="1515">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_feh" value="1505">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_fullstop" value="16778964">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_gaf" value="16778927">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_ghain" value="1498">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_ha" value="1511">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hah" value="1485">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamza" value="1473">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamza_above" value="16778836">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamza_below" value="16778837">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamzaonalef" value="1475">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamzaonwaw" value="1476">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamzaonyeh" value="1478">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_hamzaunderalef" value="1477">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_heh" value="1511">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_heh_doachashmee" value="16778942">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_heh_goal" value="16778945">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_jeem" value="1484">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_jeh" value="16778904">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_kaf" value="1507">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_kasra" value="1520">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_kasratan" value="1517">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_keheh" value="16778921">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_khah" value="1486">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_lam" value="1508">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_madda_above" value="16778835">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_maddaonalef" value="1474">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_meem" value="1509">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_noon" value="1510">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_noon_ghunna" value="16778938">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_peh" value="16778878">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_percent" value="16778858">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_qaf" value="1506">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_question_mark" value="1471">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_ra" value="1489">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_rreh" value="16778897">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_sad" value="1493">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_seen" value="1491">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_semicolon" value="1467">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_shadda" value="1521">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_sheen" value="1492">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_sukun" value="1522">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_superscript_alef" value="16778864">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_tah" value="1495">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_tatweel" value="1504">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_tcheh" value="16778886">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_teh" value="1482">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_tehmarbuta" value="1481">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_thal" value="1488">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_theh" value="1483">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_tteh" value="16778873">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_veh" value="16778916">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_waw" value="1512">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_yeh" value="1514">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_yeh_baree" value="16778962">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_zah" value="1496">
+      <type name="int"/>
+    </constant>
+    <constant name="Arabic_zain" value="1490">
+      <type name="int"/>
+    </constant>
+    <constant name="Aring" value="197">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_AT" value="16778552">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_AYB" value="16778545">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_BEN" value="16778546">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_CHA" value="16778569">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_DA" value="16778548">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_DZA" value="16778561">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_E" value="16778551">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_FE" value="16778582">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_GHAT" value="16778562">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_GIM" value="16778547">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_HI" value="16778565">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_HO" value="16778560">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_INI" value="16778555">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_JE" value="16778571">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_KE" value="16778580">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_KEN" value="16778559">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_KHE" value="16778557">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_LYUN" value="16778556">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_MEN" value="16778564">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_NU" value="16778566">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_O" value="16778581">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_PE" value="16778570">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_PYUR" value="16778579">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_RA" value="16778572">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_RE" value="16778576">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_SE" value="16778573">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_SHA" value="16778567">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_TCHE" value="16778563">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_TO" value="16778553">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_TSA" value="16778558">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_TSO" value="16778577">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_TYUN" value="16778575">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_VEV" value="16778574">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_VO" value="16778568">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_VYUN" value="16778578">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_YECH" value="16778549">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ZA" value="16778550">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ZHE" value="16778554">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_accent" value="16778587">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_amanak" value="16778588">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_apostrophe" value="16778586">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_at" value="16778600">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ayb" value="16778593">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ben" value="16778594">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_but" value="16778589">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_cha" value="16778617">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_da" value="16778596">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_dza" value="16778609">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_e" value="16778599">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_exclam" value="16778588">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_fe" value="16778630">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_full_stop" value="16778633">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ghat" value="16778610">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_gim" value="16778595">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_hi" value="16778613">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ho" value="16778608">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_hyphen" value="16778634">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ini" value="16778603">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_je" value="16778619">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ke" value="16778628">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ken" value="16778607">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_khe" value="16778605">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ligature_ew" value="16778631">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_lyun" value="16778604">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_men" value="16778612">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_nu" value="16778614">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_o" value="16778629">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_paruyk" value="16778590">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_pe" value="16778618">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_pyur" value="16778627">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_question" value="16778590">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_ra" value="16778620">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_re" value="16778624">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_se" value="16778621">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_separation_mark" value="16778589">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_sha" value="16778615">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_shesht" value="16778587">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_tche" value="16778611">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_to" value="16778601">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_tsa" value="16778606">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_tso" value="16778625">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_tyun" value="16778623">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_verjaket" value="16778633">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_vev" value="16778622">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_vo" value="16778616">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_vyun" value="16778626">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_yech" value="16778597">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_yentamna" value="16778634">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_za" value="16778598">
+      <type name="int"/>
+    </constant>
+    <constant name="Armenian_zhe" value="16778602">
+      <type name="int"/>
+    </constant>
+    <constant name="Atilde" value="195">
+      <type name="int"/>
+    </constant>
+    <record name="Atom" c:type="GdkAtom" disguised="1">
+      <method name="name" c:identifier="gdk_atom_name">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <constant name="AudibleBell_Enable" value="65146">
+      <type name="int"/>
+    </constant>
+    <constant name="AudioCycleTrack" value="269025179">
+      <type name="int"/>
+    </constant>
+    <constant name="AudioForward" value="269025175">
+      <type name="int"/>
+    </constant>
+    <constant name="AudioLowerVolume" value="269025041">
+      <type name="int"/>
+    </constant>
+    <constant name="AudioMedia" value="269025074">
+      <type name="int"/>
+    </constant>
+    <constant name="AudioMute" value="269025042">
+      <type name="int"/>
+    </constant>
+    <constant name="AudioNext" value="269025047">
+      <type name="int"/>
+    </constant>
+    <constant name="AudioPause" value="269025073">
+      <type name="int"/>
+    </constant>
+    <constant name="AudioPlay" value="269025044">
+      <type name="int"/>
+    </constant>
+    <constant name="AudioPrev" value="269025046">
+      <type name="int"/>
+    </constant>
+    <constant name="AudioRaiseVolume" value="269025043">
+      <type name="int"/>
+    </constant>
+    <constant name="AudioRandomPlay" value="269025177">
+      <type name="int"/>
+    </constant>
+    <constant name="AudioRecord" value="269025052">
+      <type name="int"/>
+    </constant>
+    <constant name="AudioRepeat" value="269025176">
+      <type name="int"/>
+    </constant>
+    <constant name="AudioRewind" value="269025086">
+      <type name="int"/>
+    </constant>
+    <constant name="AudioStop" value="269025045">
+      <type name="int"/>
+    </constant>
+    <constant name="Away" value="269025165">
+      <type name="int"/>
+    </constant>
+    <enumeration name="AxisUse"
+                 glib:type-name="GdkAxisUse"
+                 glib:get-type="gdk_axis_use_get_type"
+                 c:type="GdkAxisUse">
+      <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>
+    <constant name="B" value="66">
+      <type name="int"/>
+    </constant>
+    <constant name="Babovedot" value="16784898">
+      <type name="int"/>
+    </constant>
+    <constant name="Back" value="269025062">
+      <type name="int"/>
+    </constant>
+    <constant name="BackForward" value="269025087">
+      <type name="int"/>
+    </constant>
+    <constant name="BackSpace" value="65288">
+      <type name="int"/>
+    </constant>
+    <constant name="Battery" value="269025171">
+      <type name="int"/>
+    </constant>
+    <constant name="Begin" value="65368">
+      <type name="int"/>
+    </constant>
+    <record name="Bitmap" c:type="GdkBitmap">
+    </record>
+    <constant name="Blue" value="269025190">
+      <type name="int"/>
+    </constant>
+    <constant name="Bluetooth" value="269025172">
+      <type name="int"/>
+    </constant>
+    <constant name="Book" value="269025106">
+      <type name="int"/>
+    </constant>
+    <constant name="BounceKeys_Enable" value="65140">
+      <type name="int"/>
+    </constant>
+    <constant name="Break" value="65387">
+      <type name="int"/>
+    </constant>
+    <constant name="BrightnessAdjust" value="269025083">
+      <type name="int"/>
+    </constant>
+    <constant name="Byelorussian_SHORTU" value="1726">
+      <type name="int"/>
+    </constant>
+    <constant name="Byelorussian_shortu" value="1710">
+      <type name="int"/>
+    </constant>
+    <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="C" value="67">
+      <type name="int"/>
+    </constant>
+    <constant name="CD" value="269025107">
+      <type name="int"/>
+    </constant>
+    <constant name="CURRENT_TIME" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="Cabovedot" value="709">
+      <type name="int"/>
+    </constant>
+    <constant name="Cacute" value="454">
+      <type name="int"/>
+    </constant>
+    <constant name="Calculator" value="269025053">
+      <type name="int"/>
+    </constant>
+    <constant name="Calendar" value="269025056">
+      <type name="int"/>
+    </constant>
+    <constant name="Cancel" value="65385">
+      <type name="int"/>
+    </constant>
+    <enumeration name="CapStyle"
+                 glib:type-name="GdkCapStyle"
+                 glib:get-type="gdk_cap_style_get_type"
+                 c:type="GdkCapStyle">
+      <member name="not_last"
+              value="0"
+              c:identifier="GDK_CAP_NOT_LAST"
+              glib:nick="not-last"/>
+      <member name="butt"
+              value="1"
+              c:identifier="GDK_CAP_BUTT"
+              glib:nick="butt"/>
+      <member name="round"
+              value="2"
+              c:identifier="GDK_CAP_ROUND"
+              glib:nick="round"/>
+      <member name="projecting"
+              value="3"
+              c:identifier="GDK_CAP_PROJECTING"
+              glib:nick="projecting"/>
+    </enumeration>
+    <constant name="Caps_Lock" value="65509">
+      <type name="int"/>
+    </constant>
+    <constant name="Ccaron" value="456">
+      <type name="int"/>
+    </constant>
+    <constant name="Ccedilla" value="199">
+      <type name="int"/>
+    </constant>
+    <constant name="Ccircumflex" value="710">
+      <type name="int"/>
+    </constant>
+    <constant name="Clear" value="65291">
+      <type name="int"/>
+    </constant>
+    <constant name="ClearGrab" value="269024801">
+      <type name="int"/>
+    </constant>
+    <constant name="Close" value="269025110">
+      <type name="int"/>
+    </constant>
+    <constant name="Codeinput" value="65335">
+      <type name="int"/>
+    </constant>
+    <constant name="ColonSign" value="16785569">
+      <type name="int"/>
+    </constant>
+    <record name="Color"
+            c:type="GdkColor"
+            glib:type-name="GdkColor"
+            glib:get-type="gdk_color_get_type">
+      <field name="pixel" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="red" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="green" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="blue" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <method name="copy"
+              c:identifier="gdk_color_copy"
+              doc="Makes a copy of a color structure. The result
+must be freed using gdk_color_free().">
+        <return-value transfer-ownership="full">
+          <type name="Color" c:type="GdkColor*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gdk_color_free"
+              doc="Frees a color structure created with
+gdk_color_copy().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="hash"
+              c:identifier="gdk_color_hash"
+              doc="A hash function suitable for using for a hash
+table that stores #GdkColor&apos;s.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="equal"
+              c:identifier="gdk_color_equal"
+              doc="Compares two colors.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="colorb" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string"
+              c:identifier="gdk_color_to_string"
+              doc="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."
+              version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="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="a private colormap, and all colors in it will be
+allocated for the applications use.
+Creates a new colormap for the given visual.">
+        <return-value transfer-ownership="full">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="visual" transfer-ownership="none">
+            <type name="Visual" c:type="GdkVisual*"/>
+          </parameter>
+          <parameter name="allocate" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="get_system"
+                c:identifier="gdk_colormap_get_system"
+                doc="Gets the system&apos;s default colormap for the default screen. (See
+gdk_colormap_get_system_for_screen ())">
+        <return-value transfer-ownership="full">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </function>
+      <function name="get_system_size"
+                c:identifier="gdk_colormap_get_system_size"
+                doc="Returns the size of the system&apos;s default colormap.
+(See the description of struct #GdkColormap for an
+explanation of the size of a colormap.)">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </function>
+      <method name="ref"
+              c:identifier="gdk_colormap_ref"
+              doc="Deprecated function; use g_object_ref() instead."
+              deprecated="Use g_object_ref() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="full">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gdk_colormap_unref"
+              doc="Deprecated function; use g_object_unref() instead."
+              deprecated="Use g_object_unref() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_screen"
+              c:identifier="gdk_colormap_get_screen"
+              doc="Gets the screen for which this colormap was created."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="change"
+              c:identifier="gdk_colormap_change"
+              doc="Changes the value of the first @ncolors in a private colormap
+to match the values in the &lt;structfield&gt;colors&lt;/structfield&gt;
+array in the colormap. This function is obsolete and
+should not be used. See gdk_color_change().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ncolors" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="alloc_colors"
+              c:identifier="gdk_colormap_alloc_colors"
+              doc="values for allocated colors will be filled in.
+(their values can later be changed using gdk_color_change()).
+Writeable colors cannot be shared between applications.
+existing colors if the colors cannot be allocated as requested.
+indicates whether the corresponding color in @colors was
+successfully allocated or not.
+Allocates colors from a colormap.
+allocated.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="colors" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="n_colors" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="writeable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="best_match" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="success" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="alloc_color"
+              c:identifier="gdk_colormap_alloc_color"
+              doc="&lt;structfield&gt;pixel&lt;/structfield&gt; field will be
+filled in if allocation succeeds.
+(their values can later be changed using gdk_color_change()).
+Writeable colors cannot be shared between applications.
+existing colors if the color cannot be allocated as requested.
+Allocates a single color from a colormap.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="writeable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="best_match" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free_colors"
+              c:identifier="gdk_colormap_free_colors"
+              doc="Frees previously allocated colors.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="colors" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="n_colors" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_color"
+              c:identifier="gdk_colormap_query_color"
+              doc="Locates the RGB color in @colormap corresponding to the given
+hardware pixel @pixel. @pixel must be a valid pixel in the
+colormap; it&apos;s a programmer error to call this function with a
+pixel which is not in the colormap. Hardware pixels are normally
+obtained from gdk_colormap_alloc_colors(), or from a #GdkImage. (A
+#GdkImage contains image data in hardware format, a #GdkPixbuf
+contains image data in a canonical 24-bit RGB format.)
+This function is rarely useful; it&apos;s used for example to
+implement the eyedropper feature in #GtkColorSelection.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixel" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+          <parameter name="result" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visual"
+              c:identifier="gdk_colormap_get_visual"
+              doc="Returns the visual for which a given colormap was created.">
+        <return-value transfer-ownership="full">
+          <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="int" 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="any" 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>
+    <constant name="Community" value="269025085">
+      <type name="int"/>
+    </constant>
+    <constant name="ContrastAdjust" value="269025058">
+      <type name="int"/>
+    </constant>
+    <constant name="Control_L" value="65507">
+      <type name="int"/>
+    </constant>
+    <constant name="Control_R" value="65508">
+      <type name="int"/>
+    </constant>
+    <constant name="Copy" value="269025111">
+      <type name="int"/>
+    </constant>
+    <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>
+    <constant name="CruzeiroSign" value="16785570">
+      <type name="int"/>
+    </constant>
+    <record name="Cursor"
+            c:type="GdkCursor"
+            glib:type-name="GdkCursor"
+            glib:get-type="gdk_cursor_get_type">
+      <field name="type" writable="1">
+        <type name="CursorType" c:type="GdkCursorType"/>
+      </field>
+      <field name="ref_count" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <constructor name="new_for_display"
+                   c:identifier="gdk_cursor_new_for_display"
+                   doc="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=&quot;PNG&quot; fileref=&quot;right_ptr.png&quot;&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=&quot;PNG&quot; fileref=&quot;crosshair.png&quot;&gt;&lt;/inlinegraphic&gt; #GDK_CROSSHAIR (crosshair)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format=&quot;PNG&quot; fileref=&quot;xterm.png&quot;&gt;&lt;/inlinegraphic&gt; #GDK_XTERM (I-beam)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format=&quot;PNG&quot; fileref=&quot;watch.png&quot;&gt;&lt;/inlinegraphic&gt; #GDK_WATCH (busy)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format=&quot;PNG&quot; fileref=&quot;fleur.png&quot;&gt;&lt;/inlinegraphic&gt; #GDK_FLEUR (for moving objects)
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+&lt;inlinegraphic format=&quot;PNG&quot; fileref=&quot;hand1.png&quot;&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=&quot;PNG&quot; fileref=&quot;hand2.png&quot;&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=&quot;PNG&quot; fileref=&quot;left_side.png&quot;&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=&quot;PNG&quot; fileref=&quot;right_side.png&quot;&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=&quot;PNG&quot; fileref=&quot;top_left_corner.png&quot;&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=&quot;PNG&quot; fileref=&quot;top_right_corner.png&quot;&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=&quot;PNG&quot; fileref=&quot;bottom_left_corner.png&quot;&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=&quot;PNG&quot; fileref=&quot;bottom_right_corner.png&quot;&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=&quot;PNG&quot; fileref=&quot;top_side.png&quot;&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=&quot;PNG&quot; fileref=&quot;bottom_side.png&quot;&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=&quot;PNG&quot; fileref=&quot;sb_h_double_arrow.png&quot;&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=&quot;PNG&quot; fileref=&quot;sb_v_double_arrow.png&quot;&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;"
+                   version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Cursor" c:type="GdkCursor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <type name="Display" c:type="GdkDisplay*"/>
+          </parameter>
+          <parameter name="cursor_type" transfer-ownership="none">
+            <type name="CursorType" c:type="GdkCursorType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new"
+                   c:identifier="gdk_cursor_new"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Cursor" c:type="GdkCursor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cursor_type" transfer-ownership="none">
+            <type name="CursorType" c:type="GdkCursorType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_pixmap"
+                   c:identifier="gdk_cursor_new_from_pixmap"
+                   doc="The color does not have to be allocated first.
+The color does not have to be allocated first.
+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. You can create a bitmap
+from inline data as in the below example.
+&lt;example&gt;&lt;title&gt;Creating a custom cursor&lt;/title&gt;
+&lt;programlisting&gt;
+/&lt;!-- --&gt;* This data is in X bitmap format, and can be created with the &apos;bitmap&apos;
+utility. *&lt;!-- --&gt;/
+&amp;num;define cursor1_width 16
+&amp;num;define cursor1_height 16
+static unsigned char cursor1_bits[] = {
+0x80, 0x01, 0x40, 0x02, 0x20, 0x04, 0x10, 0x08, 0x08, 0x10, 0x04, 0x20,
+0x82, 0x41, 0x41, 0x82, 0x41, 0x82, 0x82, 0x41, 0x04, 0x20, 0x08, 0x10,
+0x10, 0x08, 0x20, 0x04, 0x40, 0x02, 0x80, 0x01};
+static unsigned char cursor1mask_bits[] = {
+0x80, 0x01, 0xc0, 0x03, 0x60, 0x06, 0x30, 0x0c, 0x18, 0x18, 0x8c, 0x31,
+0xc6, 0x63, 0x63, 0xc6, 0x63, 0xc6, 0xc6, 0x63, 0x8c, 0x31, 0x18, 0x18,
+0x30, 0x0c, 0x60, 0x06, 0xc0, 0x03, 0x80, 0x01};
+GdkCursor *cursor;
+GdkPixmap *source, *mask;
+GdkColor fg = { 0, 65535, 0, 0 }; /&lt;!-- --&gt;* Red. *&lt;!-- --&gt;/
+GdkColor bg = { 0, 0, 0, 65535 }; /&lt;!-- --&gt;* Blue. *&lt;!-- --&gt;/
+source = gdk_bitmap_create_from_data (NULL, cursor1_bits,
+cursor1_width, cursor1_height);
+mask = gdk_bitmap_create_from_data (NULL, cursor1mask_bits,
+cursor1_width, cursor1_height);
+cursor = gdk_cursor_new_from_pixmap (source, mask, &amp;amp;fg, &amp;amp;bg, 8, 8);
+g_object_unref (source);
+g_object_unref (mask);
+gdk_window_set_cursor (widget-&gt;window, cursor);
+&lt;/programlisting&gt;
+&lt;/example&gt;">
+        <return-value transfer-ownership="full">
+          <type name="Cursor" c:type="GdkCursor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <type name="Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="fg" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="bg" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </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>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_pixbuf"
+                   c:identifier="gdk_cursor_new_from_pixbuf"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Cursor" c:type="GdkCursor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <type name="Display" c:type="GdkDisplay*"/>
+          </parameter>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </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>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_name"
+                   c:identifier="gdk_cursor_new_from_name"
+                   doc="Creates a new cursor by looking up @name in the current cursor
+theme.
+the given name"
+                   version="2.8">
+        <return-value transfer-ownership="full">
+          <type name="Cursor" c:type="GdkCursor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <type name="Display" c:type="GdkDisplay*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_display" c:identifier="gdk_cursor_get_display">
+        <return-value transfer-ownership="full">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </method>
+      <method name="ref"
+              c:identifier="gdk_cursor_ref"
+              doc="Adds a reference to @cursor.">
+        <return-value transfer-ownership="full">
+          <type name="Cursor" c:type="GdkCursor*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gdk_cursor_unref"
+              doc="Removes a reference from @cursor, deallocating the cursor
+if no references remain.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_image"
+              c:identifier="gdk_cursor_get_image"
+              doc="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."
+              version="2.8">
+        <return-value transfer-ownership="full">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </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>
+    <constant name="Cut" value="269025112">
+      <type name="int"/>
+    </constant>
+    <constant name="CycleAngle" value="269025180">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_A" value="1761">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_BE" value="1762">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_CHE" value="1790">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_CHE_descender" value="16778422">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_CHE_vertstroke" value="16778424">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_DE" value="1764">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_DZHE" value="1727">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_E" value="1788">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_EF" value="1766">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_EL" value="1772">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_EM" value="1773">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_EN" value="1774">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_EN_descender" value="16778402">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ER" value="1778">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ES" value="1779">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_GHE" value="1767">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_GHE_bar" value="16778386">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_HA" value="1768">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_HARDSIGN" value="1791">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_HA_descender" value="16778418">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_I" value="1769">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_IE" value="1765">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_IO" value="1715">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_I_macron" value="16778466">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_JE" value="1720">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_KA" value="1771">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_KA_descender" value="16778394">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_KA_vertstroke" value="16778396">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_LJE" value="1721">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_NJE" value="1722">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_O" value="1775">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_O_bar" value="16778472">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_PE" value="1776">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_SCHWA" value="16778456">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_SHA" value="1787">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_SHCHA" value="1789">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_SHHA" value="16778426">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_SHORTI" value="1770">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_SOFTSIGN" value="1784">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_TE" value="1780">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_TSE" value="1763">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_U" value="1781">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_U_macron" value="16778478">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_U_straight" value="16778414">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_U_straight_bar" value="16778416">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_VE" value="1783">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_YA" value="1777">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_YERU" value="1785">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_YU" value="1760">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ZE" value="1786">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ZHE" value="1782">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ZHE_descender" value="16778390">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_a" value="1729">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_be" value="1730">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_che" value="1758">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_che_descender" value="16778423">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_che_vertstroke" value="16778425">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_de" value="1732">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_dzhe" value="1711">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_e" value="1756">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ef" value="1734">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_el" value="1740">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_em" value="1741">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_en" value="1742">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_en_descender" value="16778403">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_er" value="1746">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_es" value="1747">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ghe" value="1735">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ghe_bar" value="16778387">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ha" value="1736">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ha_descender" value="16778419">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_hardsign" value="1759">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_i" value="1737">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_i_macron" value="16778467">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ie" value="1733">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_io" value="1699">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_je" value="1704">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ka" value="1739">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ka_descender" value="16778395">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ka_vertstroke" value="16778397">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_lje" value="1705">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_nje" value="1706">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_o" value="1743">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_o_bar" value="16778473">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_pe" value="1744">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_schwa" value="16778457">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_sha" value="1755">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_shcha" value="1757">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_shha" value="16778427">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_shorti" value="1738">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_softsign" value="1752">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_te" value="1748">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_tse" value="1731">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_u" value="1749">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_u_macron" value="16778479">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_u_straight" value="16778415">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_u_straight_bar" value="16778417">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ve" value="1751">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ya" value="1745">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_yeru" value="1753">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_yu" value="1728">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_ze" value="1754">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_zhe" value="1750">
+      <type name="int"/>
+    </constant>
+    <constant name="Cyrillic_zhe_descender" value="16778391">
+      <type name="int"/>
+    </constant>
+    <constant name="D" value="68">
+      <type name="int"/>
+    </constant>
+    <constant name="DOS" value="269025114">
+      <type name="int"/>
+    </constant>
+    <constant name="Dabovedot" value="16784906">
+      <type name="int"/>
+    </constant>
+    <constant name="Dcaron" value="463">
+      <type name="int"/>
+    </constant>
+    <constant name="Delete" value="65535">
+      <type name="int"/>
+    </constant>
+    <callback name="DestroyNotify" c:type="GdkDestroyNotify">
+      <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="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Device"
+           c:type="GdkDevice"
+           parent="GObject.Object"
+           glib:type-name="GdkDevice"
+           glib:get-type="gdk_device_get_type"
+           glib:type-struct="DeviceClass">
+      <function name="free_history"
+                c:identifier="gdk_device_free_history"
+                doc="Frees an array of #GdkTimeCoord that was returned by gdk_device_get_history().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="events"
+                     direction="inout"
+                     transfer-ownership="none"
+                     doc="an array of #GdkTimeCoord.">
+            <type name="TimeCoord" c:type="GdkTimeCoord**"/>
+          </parameter>
+          <parameter name="n_events" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_core_pointer"
+                c:identifier="gdk_device_get_core_pointer"
+                doc="Returns the core pointer device for the default display.
+display and should not be freed.">
+        <return-value transfer-ownership="full">
+          <type name="Device" c:type="GdkDevice*"/>
+        </return-value>
+      </function>
+      <method name="set_source" c:identifier="gdk_device_set_source">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <type name="InputSource" c:type="GdkInputSource"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mode" c:identifier="gdk_device_set_mode">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="InputMode" c:type="GdkInputMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_key" c:identifier="gdk_device_set_key">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="keyval" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_axis_use" c:identifier="gdk_device_set_axis_use">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="use" transfer-ownership="none">
+            <type name="AxisUse" c:type="GdkAxisUse"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_state"
+              c:identifier="gdk_device_get_state"
+              doc="or %NULL.
+Gets the current state of a device.">
+        <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="axes" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="ModifierType" c:type="GdkModifierType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_history"
+              c:identifier="gdk_device_get_history"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="start" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="stop" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="events"
+                     direction="out"
+                     transfer-ownership="none"
+                     doc="location to store a newly-allocated array of #GdkTimeCoord, or %NULL">
+            <array length="5" c:type="GdkTimeCoord***">
+              <type name="TimeCoord"/>
+            </array>
+          </parameter>
+          <parameter name="n_events" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_axis"
+              c:identifier="gdk_device_get_axis"
+              doc="Interprets an array of double as axis values for a given device,
+and locates the value in the array for a given axis use.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="axes" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="use" transfer-ownership="none">
+            <type name="AxisUse" c:type="GdkAxisUse"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </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="source">
+        <type name="InputSource" c:type="GdkInputSource"/>
+      </field>
+      <field name="mode">
+        <type name="InputMode" c:type="GdkInputMode"/>
+      </field>
+      <field name="has_cursor">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="num_axes">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="axes">
+        <type name="DeviceAxis" c:type="GdkDeviceAxis*"/>
+      </field>
+      <field name="num_keys">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="keys">
+        <type name="DeviceKey" c:type="GdkDeviceKey*"/>
+      </field>
+    </class>
+    <record name="DeviceAxis" c:type="GdkDeviceAxis">
+      <field name="use" writable="1">
+        <type name="AxisUse" c:type="GdkAxisUse"/>
+      </field>
+      <field name="min" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="max" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+    </record>
+    <record name="DeviceClass"
+            c:type="GdkDeviceClass"
+            glib:is-gtype-struct-for="Device">
+    </record>
+    <record name="DeviceKey" c:type="GdkDeviceKey">
+      <field name="keyval" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="modifiers" writable="1">
+        <type name="ModifierType" c:type="GdkModifierType"/>
+      </field>
+    </record>
+    <class name="Display"
+           c:type="GdkDisplay"
+           parent="GObject.Object"
+           glib:type-name="GdkDisplay"
+           glib:get-type="gdk_display_get_type"
+           glib:type-struct="DisplayClass">
+      <function name="open"
+                c:identifier="gdk_display_open"
+                doc="could not be opened.
+Opens a display."
+                version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_default"
+                c:identifier="gdk_display_get_default"
+                doc="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."
+                version="2.2">
+        <return-value transfer-ownership="none"
+                      doc="a #GdkDisplay, or %NULL if there is no default">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </function>
+      <function name="open_default_libgtk_only"
+                c:identifier="gdk_display_open_default_libgtk_only"
+                doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </function>
+      <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">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_screen" invoker="get_screen">
+        <return-value transfer-ownership="full">
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen_num" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_default_screen" invoker="get_default_screen">
+        <return-value transfer-ownership="full">
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_name"
+              c:identifier="gdk_display_get_name"
+              doc="Gets the name of the display.
+by GDK and should not be modified or freed."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_n_screens"
+              c:identifier="gdk_display_get_n_screens"
+              doc="Gets the number of screen managed by the @display."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_screen"
+              c:identifier="gdk_display_get_screen"
+              doc="Returns a screen object for one of the screens of the display."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen_num" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_screen"
+              c:identifier="gdk_display_get_default_screen"
+              doc="Get the default #GdkScreen for @display."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="pointer_ungrab"
+              c:identifier="gdk_display_pointer_ungrab"
+              doc="Release any pointer grab."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time_" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="keyboard_ungrab"
+              c:identifier="gdk_display_keyboard_ungrab"
+              doc="Release any keyboard grab"
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="time_" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pointer_is_grabbed"
+              c:identifier="gdk_display_pointer_is_grabbed"
+              doc="Test if the pointer is grabbed."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="beep"
+              c:identifier="gdk_display_beep"
+              doc="Emits a short beep on @display"
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="sync"
+              c:identifier="gdk_display_sync"
+              doc="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."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="flush"
+              c:identifier="gdk_display_flush"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="close"
+              c:identifier="gdk_display_close"
+              doc="Closes the connection to the windowing system for the given display,
+and cleans up associated resources."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="list_devices"
+              c:identifier="gdk_display_list_devices"
+              doc="Returns the list of available input devices attached to @display.
+The list is statically allocated and should not be freed."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_event"
+              c:identifier="gdk_display_get_event"
+              doc="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()."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GdkEvent*"/>
+        </return-value>
+      </method>
+      <method name="peek_event"
+              c:identifier="gdk_display_peek_event"
+              doc="Gets a copy of the first #GdkEvent in the @display&apos;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()."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GdkEvent*"/>
+        </return-value>
+      </method>
+      <method name="put_event"
+              c:identifier="gdk_display_put_event"
+              doc="Appends a copy of the given event onto the front of the event
+queue for @display."
+              version="2.2">
+        <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>
+        </parameters>
+      </method>
+      <method name="add_client_message_filter"
+              c:identifier="gdk_display_add_client_message_filter"
+              doc="This will be checked against the @message_type field
+of the XClientMessage event struct.
+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."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message_type" transfer-ownership="none">
+            <type name="Atom" c:type="GdkAtom"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="3">
+            <type name="FilterFunc" c:type="GdkFilterFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double_click_time"
+              c:identifier="gdk_display_set_double_click_time"
+              doc="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."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="msec" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double_click_distance"
+              c:identifier="gdk_display_set_double_click_distance"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="distance" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_core_pointer"
+              c:identifier="gdk_display_get_core_pointer"
+              doc="Returns the core pointer device for the given display
+display and should not be freed."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Device" c:type="GdkDevice*"/>
+        </return-value>
+      </method>
+      <method name="get_pointer"
+              c:identifier="gdk_display_get_pointer"
+              doc="cursor is on, or %NULL.
+Gets the current location of the pointer and the current modifier
+mask for a given display."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="location to store the screen that the">
+            <type name="Screen" c:type="GdkScreen**"/>
+          </parameter>
+          <parameter name="x"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store root window X coordinate of pointer, or %NULL.">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store root window Y coordinate of pointer, or %NULL.">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="mask"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store current modifier mask, or %NULL">
+            <type name="ModifierType" c:type="GdkModifierType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_window_at_pointer"
+              c:identifier="gdk_display_get_window_at_pointer"
+              doc="to the window origin, or %NULL
+to the window origin, or %NULL
+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)."
+              version="2.2">
+        <return-value transfer-ownership="none"
+                      doc="the window under the mouse pointer, or %NULL">
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="win_x"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for x coordinate of the pointer location relative">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="win_y"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for y coordinate of the pointer location relative">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="warp_pointer"
+              c:identifier="gdk_display_warp_pointer"
+              doc="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."
+              version="2.8">
+        <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>
+          <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>
+        </parameters>
+      </method>
+      <method name="set_pointer_hooks"
+              c:identifier="gdk_display_set_pointer_hooks"
+              doc="quantities related to the current pointer position,
+or %NULL to restore the default table.
+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."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="DisplayPointerHooks" c:type="GdkDisplayPointerHooks*"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_hooks" transfer-ownership="none">
+            <type name="DisplayPointerHooks" c:type="GdkDisplayPointerHooks*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="supports_cursor_alpha"
+              c:identifier="gdk_display_supports_cursor_alpha"
+              doc="Returns %TRUE if cursors can use an 8bit alpha channel
+on @display. Otherwise, cursors are restricted to bilevel
+alpha (i.e. a mask)."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="supports_cursor_color"
+              c:identifier="gdk_display_supports_cursor_color"
+              doc="Returns %TRUE if multicolored cursors are supported
+on @display. Otherwise, cursors have only a forground
+and a background color."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_default_cursor_size"
+              c:identifier="gdk_display_get_default_cursor_size"
+              doc="Returns the default size to use for cursors on @display."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_maximal_cursor_size"
+              c:identifier="gdk_display_get_maximal_cursor_size"
+              doc="Gets the maximal size to use for cursors on @display."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="the return location for the maximal cursor width">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="the return location for the maximal cursor height">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_group"
+              c:identifier="gdk_display_get_default_group"
+              doc="Returns the default group leader window for all toplevel windows
+on @display. This window is implicitly created by GDK.
+See gdk_window_set_group()."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="supports_selection_notification"
+              c:identifier="gdk_display_supports_selection_notification"
+              doc="Returns whether #GdkEventOwnerChange events will be
+sent when the owner of a selection changes.
+be sent."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="request_selection_notification"
+              c:identifier="gdk_display_request_selection_notification"
+              doc="ownership change notification is requested
+Request #GdkEventOwnerChange events for ownership changes
+of the selection named by the given atom.
+be sent."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection" transfer-ownership="none">
+            <type name="Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="supports_clipboard_persistence"
+              c:identifier="gdk_display_supports_clipboard_persistence">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </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="uint32" 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="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="supports_shapes"
+              c:identifier="gdk_display_supports_shapes"
+              doc="Returns %TRUE if gdk_window_shape_combine_mask() can
+be used to create shaped windows on @display."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="supports_input_shapes"
+              c:identifier="gdk_display_supports_input_shapes"
+              doc="Returns %TRUE if gdk_window_input_shape_combine_mask() can
+be used to modify the input shape of windows on @display."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="supports_composite"
+              c:identifier="gdk_display_supports_composite"
+              doc="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."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="queued_events">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="queued_tail">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="button_click_time">
+        <array zero-terminated="0" c:type="guint32" fixed-size="2">
+          <type name="uint32"/>
+        </array>
+      </field>
+      <field name="button_window">
+        <array zero-terminated="0" c:type="GdkWindow*" fixed-size="2">
+          <type name="Window"/>
+        </array>
+      </field>
+      <field name="button_number">
+        <array zero-terminated="0" c:type="gint" fixed-size="2">
+          <type name="int"/>
+        </array>
+      </field>
+      <field name="double_click_time">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="core_pointer">
+        <type name="Device" c:type="GdkDevice*"/>
+      </field>
+      <field name="pointer_hooks">
+        <type name="DisplayPointerHooks" c:type="GdkDisplayPointerHooks*"/>
+      </field>
+      <field name="closed" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="ignore_core_events" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="double_click_distance">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="button_x">
+        <array zero-terminated="0" c:type="gint" fixed-size="2">
+          <type name="int"/>
+        </array>
+      </field>
+      <field name="button_y">
+        <array zero-terminated="0" c:type="gint" fixed-size="2">
+          <type name="int"/>
+        </array>
+      </field>
+      <field name="pointer_grabs">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="keyboard_grab">
+        <type name="KeyboardGrabInfo" c:type="GdkKeyboardGrabInfo"/>
+      </field>
+      <field name="pointer_info">
+        <type name="PointerWindowInfo" c:type="GdkPointerWindowInfo"/>
+      </field>
+      <field name="last_event_time">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <glib:signal name="closed"
+                   doc="The ::closed signal is emitted when the connection to the windowing
+system for @display is closed."
+                   version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_error" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </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" c:type="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" c:type="get_n_screens">
+          <return-value transfer-ownership="none">
+            <type name="int" 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">
+        <callback name="get_screen" c:type="get_screen">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_default_screen">
+        <callback name="get_default_screen" c:type="get_default_screen">
+          <return-value transfer-ownership="full">
+            <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" c:type="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="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="DisplayManager"
+           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"
+                doc="Gets the singleton #GdkDisplayManager object.
+gdk_init(), or gdk_init_check() must have been called first."
+                version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="DisplayManager" c:type="GdkDisplayManager*"/>
+        </return-value>
+      </function>
+      <method name="get_default_display"
+              c:identifier="gdk_display_manager_get_default_display"
+              doc="Gets the default #GdkDisplay.
+display."
+              version="2.2">
+        <return-value transfer-ownership="none"
+                      doc="a #GdkDisplay, or %NULL if there is no default">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </method>
+      <method name="set_default_display"
+              c:identifier="gdk_display_manager_set_default_display"
+              doc="Sets @display as the default display."
+              version="2.2">
+        <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>
+        </parameters>
+      </method>
+      <method name="list_displays"
+              c:identifier="gdk_display_manager_list_displays"
+              doc="List all currently open displays.
+Free this list with g_slist_free() when you are done with it."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="GLib.SList" c:type="GSList*"/>
+        </return-value>
+      </method>
+      <property name="default-display" writable="1">
+        <type name="Display" c:type="GdkDisplay"/>
+      </property>
+      <glib:signal name="display-opened"
+                   doc="The ::display_opened signal is emitted when a display is opened."
+                   version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <type name="Display" c:type="GdkDisplay"/>
+          </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" c:type="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">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="window_get_pointer">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="window_at_pointer">
+        <type name="any" c:type="pointer"/>
+      </field>
+    </record>
+    <constant name="Documents" value="269025115">
+      <type name="int"/>
+    </constant>
+    <constant name="DongSign" value="16785579">
+      <type name="int"/>
+    </constant>
+    <constant name="Down" value="65364">
+      <type name="int"/>
+    </constant>
+    <bitfield name="DragAction"
+              glib:type-name="GdkDragAction"
+              glib:get-type="gdk_drag_action_get_type"
+              c:type="GdkDragAction">
+      <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: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="Creates a new #GdkDragContext.">
+        <return-value transfer-ownership="full">
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </return-value>
+      </constructor>
+      <method name="ref"
+              c:identifier="gdk_drag_context_ref"
+              doc="Deprecated function; use g_object_ref() instead."
+              deprecated="Use g_object_ref() instead."
+              deprecated-version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gdk_drag_context_unref"
+              doc="Deprecated function; use g_object_unref() instead."
+              deprecated="Use g_object_unref() instead."
+              deprecated-version="2.2">
+        <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="protocol">
+        <type name="DragProtocol" c:type="GdkDragProtocol"/>
+      </field>
+      <field name="is_source">
+        <type name="boolean" 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*"/>
+      </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="uint32" c:type="guint32"/>
+      </field>
+      <field name="windowing_data">
+        <type name="any" 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">
+      <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: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_gc">
+        <return-value transfer-ownership="full">
+          <type name="GC" c:type="GdkGC*"/>
+        </return-value>
+        <parameters>
+          <parameter name="values" transfer-ownership="none">
+            <type name="GCValues" c:type="GdkGCValues*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="GCValuesMask" c:type="GdkGCValuesMask"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_rectangle">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gc" transfer-ownership="none">
+            <type name="GC" c:type="GdkGC*"/>
+          </parameter>
+          <parameter name="filled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </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>
+      </virtual-method>
+      <virtual-method name="draw_arc">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gc" transfer-ownership="none">
+            <type name="GC" c:type="GdkGC*"/>
+          </parameter>
+          <parameter name="filled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </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>
+          <parameter name="angle1" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="angle2" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_polygon">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gc" transfer-ownership="none">
+            <type name="GC" c:type="GdkGC*"/>
+          </parameter>
+          <parameter name="filled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="points" transfer-ownership="none">
+            <type name="Point" c:type="GdkPoint*"/>
+          </parameter>
+          <parameter name="npoints" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_text">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font" transfer-ownership="none">
+            <type name="Font" c:type="GdkFont*"/>
+          </parameter>
+          <parameter name="gc" transfer-ownership="none">
+            <type name="GC" c:type="GdkGC*"/>
+          </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="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="text_length" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_text_wc">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font" transfer-ownership="none">
+            <type name="Font" c:type="GdkFont*"/>
+          </parameter>
+          <parameter name="gc" transfer-ownership="none">
+            <type name="GC" c:type="GdkGC*"/>
+          </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="text" transfer-ownership="none">
+            <type name="WChar" c:type="GdkWChar*"/>
+          </parameter>
+          <parameter name="text_length" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_drawable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gc" transfer-ownership="none">
+            <type name="GC" c:type="GdkGC*"/>
+          </parameter>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Drawable" c:type="GdkDrawable*"/>
+          </parameter>
+          <parameter name="xsrc" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="ysrc" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="xdest" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="ydest" 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>
+      <virtual-method name="draw_points">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gc" transfer-ownership="none">
+            <type name="GC" c:type="GdkGC*"/>
+          </parameter>
+          <parameter name="points" transfer-ownership="none">
+            <type name="Point" c:type="GdkPoint*"/>
+          </parameter>
+          <parameter name="npoints" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_segments">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gc" transfer-ownership="none">
+            <type name="GC" c:type="GdkGC*"/>
+          </parameter>
+          <parameter name="segs" transfer-ownership="none">
+            <type name="Segment" c:type="GdkSegment*"/>
+          </parameter>
+          <parameter name="nsegs" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_lines">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gc" transfer-ownership="none">
+            <type name="GC" c:type="GdkGC*"/>
+          </parameter>
+          <parameter name="points" transfer-ownership="none">
+            <type name="Point" c:type="GdkPoint*"/>
+          </parameter>
+          <parameter name="npoints" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_glyphs">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gc" transfer-ownership="none">
+            <type name="GC" c:type="GdkGC*"/>
+          </parameter>
+          <parameter name="font" transfer-ownership="none">
+            <type name="Pango.Font" c:type="PangoFont*"/>
+          </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="glyphs" transfer-ownership="none">
+            <type name="Pango.GlyphString" c:type="PangoGlyphString*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_image">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gc" transfer-ownership="none">
+            <type name="GC" c:type="GdkGC*"/>
+          </parameter>
+          <parameter name="image" transfer-ownership="none">
+            <type name="Image" c:type="GdkImage*"/>
+          </parameter>
+          <parameter name="xsrc" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="ysrc" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="xdest" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="ydest" 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>
+      <virtual-method name="get_depth" invoker="get_depth">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_size" invoker="get_size">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </virtual-method>
+      <virtual-method name="set_colormap">
+        <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>
+      <virtual-method name="get_colormap" invoker="get_colormap">
+        <return-value transfer-ownership="full">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_visual" invoker="get_visual">
+        <return-value transfer-ownership="full">
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_screen" invoker="get_screen">
+        <return-value transfer-ownership="full">
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_image" invoker="get_image">
+        <return-value transfer-ownership="full">
+          <type name="Image" c:type="GdkImage*"/>
+        </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>
+      <virtual-method name="get_clip_region" invoker="get_clip_region">
+        <return-value transfer-ownership="full">
+          <type name="Region" c:type="GdkRegion*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_visible_region" invoker="get_visible_region">
+        <return-value transfer-ownership="full">
+          <type name="Region" c:type="GdkRegion*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_composite_drawable">
+        <return-value transfer-ownership="full">
+          <type name="Drawable" c:type="GdkDrawable*"/>
+        </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>
+          <parameter name="composite_x_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="composite_y_offset"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_pixbuf">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gc" transfer-ownership="none">
+            <type name="GC" c:type="GdkGC*"/>
+          </parameter>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+          <parameter name="src_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="src_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="dest_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="dest_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>
+          <parameter name="dither" transfer-ownership="none">
+            <type name="RgbDither" c:type="GdkRgbDither"/>
+          </parameter>
+          <parameter name="x_dither" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y_dither" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="copy_to_image" invoker="copy_to_image">
+        <return-value transfer-ownership="full">
+          <type name="Image" c:type="GdkImage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="image" transfer-ownership="none">
+            <type name="Image" c:type="GdkImage*"/>
+          </parameter>
+          <parameter name="src_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="src_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="dest_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="dest_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>
+      <virtual-method name="draw_glyphs_transformed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gc" transfer-ownership="none">
+            <type name="GC" c:type="GdkGC*"/>
+          </parameter>
+          <parameter name="matrix" transfer-ownership="none">
+            <type name="Pango.Matrix" c:type="PangoMatrix*"/>
+          </parameter>
+          <parameter name="font" transfer-ownership="none">
+            <type name="Pango.Font" c:type="PangoFont*"/>
+          </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="glyphs" transfer-ownership="none">
+            <type name="Pango.GlyphString" c:type="PangoGlyphString*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_trapezoids">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gc" transfer-ownership="none">
+            <type name="GC" c:type="GdkGC*"/>
+          </parameter>
+          <parameter name="trapezoids" transfer-ownership="none">
+            <type name="Trapezoid" c:type="GdkTrapezoid*"/>
+          </parameter>
+          <parameter name="n_trapezoids" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </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="get_source_drawable">
+        <return-value transfer-ownership="full">
+          <type name="Drawable" c:type="GdkDrawable*"/>
+        </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="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="int" c:type="int"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_drawable_with_src">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gc" transfer-ownership="none">
+            <type name="GC" c:type="GdkGC*"/>
+          </parameter>
+          <parameter name="src" transfer-ownership="none">
+            <type name="Drawable" c:type="GdkDrawable*"/>
+          </parameter>
+          <parameter name="xsrc" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="ysrc" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="xdest" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="ydest" 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>
+          <parameter name="original_src" transfer-ownership="none">
+            <type name="Drawable" c:type="GdkDrawable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_data"
+              c:identifier="gdk_drawable_set_data"
+              doc="This function is equivalent to g_object_set_data(),
+the #GObject variant should be used instead.">
+        <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="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy_func"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="call"
+                     doc="function to free @data, or %NULL">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_data"
+              c:identifier="gdk_drawable_get_data"
+              doc="Equivalent to g_object_get_data(); the #GObject variant should be
+used instead.">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size"
+              c:identifier="gdk_drawable_get_size"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store drawable&apos;s width, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store drawable&apos;s height, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_colormap"
+              c:identifier="gdk_drawable_set_colormap"
+              doc="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. i.e.
+when using a #GdkGC to draw to a drawable, or copying one drawable
+to another, the colormaps should match.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="colormap" transfer-ownership="none">
+            <type name="Colormap" c:type="GdkColormap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_colormap"
+              c:identifier="gdk_drawable_get_colormap"
+              doc="Gets the colormap for @drawable, if one is set; returns
+%NULL otherwise.">
+        <return-value transfer-ownership="full">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </method>
+      <method name="get_visual"
+              c:identifier="gdk_drawable_get_visual"
+              doc="Gets the #GdkVisual describing the pixel format of @drawable.">
+        <return-value transfer-ownership="full">
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </method>
+      <method name="get_depth"
+              c:identifier="gdk_drawable_get_depth"
+              doc="Obtains the bit depth of the drawable, that is, the number of bits
+that make up a pixel in the drawable&apos;s visual. Examples are 8 bits
+per pixel, 24 bits per pixel, etc.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_screen"
+              c:identifier="gdk_drawable_get_screen"
+              doc="Gets the #GdkScreen associated with a #GdkDrawable."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="get_display"
+              c:identifier="gdk_drawable_get_display"
+              doc="Gets the #GdkDisplay associated with a #GdkDrawable."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </method>
+      <method name="ref"
+              c:identifier="gdk_drawable_ref"
+              doc="Deprecated equivalent of calling g_object_ref() on @drawable.
+(Drawables were not objects in previous versions of GDK.)"
+              deprecated="Use g_object_ref() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="full">
+          <type name="Drawable" c:type="GdkDrawable*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gdk_drawable_unref"
+              doc="Deprecated equivalent of calling g_object_unref() on @drawable."
+              deprecated="Use g_object_unref() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_image"
+              c:identifier="gdk_drawable_get_image"
+              doc="A #GdkImage stores client-side image data (pixels). In contrast,
+#GdkPixmap and #GdkWindow are server-side
+objects. gdk_drawable_get_image() obtains the pixels from a
+server-side drawable as a client-side #GdkImage.  The format of a
+#GdkImage depends on the #GdkVisual of the current display, which
+makes manipulating #GdkImage extremely difficult; therefore, in
+most cases you should use gdk_pixbuf_get_from_drawable() instead of
+this lower-level function. A #GdkPixbuf contains image data in a
+canonicalized RGB format, rather than a display-dependent format.
+Of course, there&apos;s a convenience vs. speed tradeoff here, so you&apos;ll
+want to think about what makes sense for your application.
+obtain as an image.
+You would usually copy image data to the client side if you intend
+to examine the values of individual pixels, for example to darken
+an image or add a red tint. It would be prohibitively slow to
+make a round-trip request to the windowing system for each pixel,
+so instead you get all of them at once, modify them, then copy
+them all back at once.
+If the X server or other windowing system backend is on the local
+machine, this function may use shared memory to avoid copying
+the image data.
+If the source drawable is a #GdkWindow and partially offscreen
+or obscured, then the obscured portions of the returned image
+will contain undefined data.">
+        <return-value transfer-ownership="full">
+          <type name="Image" c:type="GdkImage*"/>
+        </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="copy_to_image"
+              c:identifier="gdk_drawable_copy_to_image"
+              doc="Copies a portion of @drawable into the client side image structure
+and copies into that. See gdk_drawable_get_image() for further details.
+of @drawable"
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Image" c:type="GdkImage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="image"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkDrawable, or %NULL if a new @image should be created.">
+            <type name="Image" c:type="GdkImage*"/>
+          </parameter>
+          <parameter name="src_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="src_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="dest_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="dest_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="get_clip_region"
+              c:identifier="gdk_drawable_get_clip_region"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Region" c:type="GdkRegion*"/>
+        </return-value>
+      </method>
+      <method name="get_visible_region"
+              c:identifier="gdk_drawable_get_visible_region"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Region" c:type="GdkRegion*"/>
+        </return-value>
+      </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="create_gc">
+        <callback name="create_gc" c:type="create_gc">
+          <return-value transfer-ownership="full">
+            <type name="GC" c:type="GdkGC*"/>
+          </return-value>
+          <parameters>
+            <parameter name="drawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+            <parameter name="values" transfer-ownership="none">
+              <type name="GCValues" c:type="GdkGCValues*"/>
+            </parameter>
+            <parameter name="mask" transfer-ownership="none">
+              <type name="GCValuesMask" c:type="GdkGCValuesMask"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_rectangle">
+        <callback name="draw_rectangle" c:type="draw_rectangle">
+          <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="gc" transfer-ownership="none">
+              <type name="GC" c:type="GdkGC*"/>
+            </parameter>
+            <parameter name="filled" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </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="draw_arc">
+        <callback name="draw_arc" c:type="draw_arc">
+          <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="gc" transfer-ownership="none">
+              <type name="GC" c:type="GdkGC*"/>
+            </parameter>
+            <parameter name="filled" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </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>
+            <parameter name="angle1" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="angle2" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_polygon">
+        <callback name="draw_polygon" c:type="draw_polygon">
+          <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="gc" transfer-ownership="none">
+              <type name="GC" c:type="GdkGC*"/>
+            </parameter>
+            <parameter name="filled" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="points" transfer-ownership="none">
+              <type name="Point" c:type="GdkPoint*"/>
+            </parameter>
+            <parameter name="npoints" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_text">
+        <callback name="draw_text" c:type="draw_text">
+          <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="font" transfer-ownership="none">
+              <type name="Font" c:type="GdkFont*"/>
+            </parameter>
+            <parameter name="gc" transfer-ownership="none">
+              <type name="GC" c:type="GdkGC*"/>
+            </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="text" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="text_length" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_text_wc">
+        <callback name="draw_text_wc" c:type="draw_text_wc">
+          <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="font" transfer-ownership="none">
+              <type name="Font" c:type="GdkFont*"/>
+            </parameter>
+            <parameter name="gc" transfer-ownership="none">
+              <type name="GC" c:type="GdkGC*"/>
+            </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="text" transfer-ownership="none">
+              <type name="WChar" c:type="GdkWChar*"/>
+            </parameter>
+            <parameter name="text_length" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_drawable">
+        <callback name="draw_drawable" c:type="draw_drawable">
+          <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="gc" transfer-ownership="none">
+              <type name="GC" c:type="GdkGC*"/>
+            </parameter>
+            <parameter name="src" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+            <parameter name="xsrc" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="ysrc" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="xdest" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="ydest" 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="draw_points">
+        <callback name="draw_points" c:type="draw_points">
+          <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="gc" transfer-ownership="none">
+              <type name="GC" c:type="GdkGC*"/>
+            </parameter>
+            <parameter name="points" transfer-ownership="none">
+              <type name="Point" c:type="GdkPoint*"/>
+            </parameter>
+            <parameter name="npoints" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_segments">
+        <callback name="draw_segments" c:type="draw_segments">
+          <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="gc" transfer-ownership="none">
+              <type name="GC" c:type="GdkGC*"/>
+            </parameter>
+            <parameter name="segs" transfer-ownership="none">
+              <type name="Segment" c:type="GdkSegment*"/>
+            </parameter>
+            <parameter name="nsegs" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_lines">
+        <callback name="draw_lines" c:type="draw_lines">
+          <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="gc" transfer-ownership="none">
+              <type name="GC" c:type="GdkGC*"/>
+            </parameter>
+            <parameter name="points" transfer-ownership="none">
+              <type name="Point" c:type="GdkPoint*"/>
+            </parameter>
+            <parameter name="npoints" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_glyphs">
+        <callback name="draw_glyphs" c:type="draw_glyphs">
+          <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="gc" transfer-ownership="none">
+              <type name="GC" c:type="GdkGC*"/>
+            </parameter>
+            <parameter name="font" transfer-ownership="none">
+              <type name="Pango.Font" c:type="PangoFont*"/>
+            </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="glyphs" transfer-ownership="none">
+              <type name="Pango.GlyphString" c:type="PangoGlyphString*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_image">
+        <callback name="draw_image" c:type="draw_image">
+          <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="gc" transfer-ownership="none">
+              <type name="GC" c:type="GdkGC*"/>
+            </parameter>
+            <parameter name="image" transfer-ownership="none">
+              <type name="Image" c:type="GdkImage*"/>
+            </parameter>
+            <parameter name="xsrc" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="ysrc" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="xdest" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="ydest" 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="get_depth">
+        <callback name="get_depth" c:type="get_depth">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="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" 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>
+        </callback>
+      </field>
+      <field name="set_colormap">
+        <callback name="set_colormap" c:type="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">
+        <callback name="get_colormap" c:type="get_colormap">
+          <return-value transfer-ownership="full">
+            <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">
+        <callback name="get_visual" c:type="get_visual">
+          <return-value transfer-ownership="full">
+            <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">
+        <callback name="get_screen" c:type="get_screen">
+          <return-value transfer-ownership="full">
+            <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_image">
+        <callback name="get_image" c:type="get_image">
+          <return-value transfer-ownership="full">
+            <type name="Image" c:type="GdkImage*"/>
+          </return-value>
+          <parameters>
+            <parameter name="drawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </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="get_clip_region">
+        <callback name="get_clip_region" c:type="get_clip_region">
+          <return-value transfer-ownership="full">
+            <type name="Region" c:type="GdkRegion*"/>
+          </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" c:type="get_visible_region">
+          <return-value transfer-ownership="full">
+            <type name="Region" c:type="GdkRegion*"/>
+          </return-value>
+          <parameters>
+            <parameter name="drawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_composite_drawable">
+        <callback name="get_composite_drawable"
+                  c:type="get_composite_drawable">
+          <return-value transfer-ownership="full">
+            <type name="Drawable" c:type="GdkDrawable*"/>
+          </return-value>
+          <parameters>
+            <parameter name="drawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </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>
+            <parameter name="composite_x_offset"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="composite_y_offset"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_pixbuf">
+        <callback name="draw_pixbuf" c:type="draw_pixbuf">
+          <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="gc" transfer-ownership="none">
+              <type name="GC" c:type="GdkGC*"/>
+            </parameter>
+            <parameter name="pixbuf" transfer-ownership="none">
+              <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+            </parameter>
+            <parameter name="src_x" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="src_y" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="dest_x" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="dest_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>
+            <parameter name="dither" transfer-ownership="none">
+              <type name="RgbDither" c:type="GdkRgbDither"/>
+            </parameter>
+            <parameter name="x_dither" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y_dither" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy_to_image">
+        <callback name="copy_to_image" c:type="_copy_to_image">
+          <return-value transfer-ownership="full">
+            <type name="Image" c:type="GdkImage*"/>
+          </return-value>
+          <parameters>
+            <parameter name="drawable" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+            <parameter name="image" transfer-ownership="none">
+              <type name="Image" c:type="GdkImage*"/>
+            </parameter>
+            <parameter name="src_x" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="src_y" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="dest_x" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="dest_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="draw_glyphs_transformed">
+        <callback name="draw_glyphs_transformed"
+                  c:type="draw_glyphs_transformed">
+          <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="gc" transfer-ownership="none">
+              <type name="GC" c:type="GdkGC*"/>
+            </parameter>
+            <parameter name="matrix" transfer-ownership="none">
+              <type name="Pango.Matrix" c:type="PangoMatrix*"/>
+            </parameter>
+            <parameter name="font" transfer-ownership="none">
+              <type name="Pango.Font" c:type="PangoFont*"/>
+            </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="glyphs" transfer-ownership="none">
+              <type name="Pango.GlyphString" c:type="PangoGlyphString*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_trapezoids">
+        <callback name="draw_trapezoids" c:type="draw_trapezoids">
+          <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="gc" transfer-ownership="none">
+              <type name="GC" c:type="GdkGC*"/>
+            </parameter>
+            <parameter name="trapezoids" transfer-ownership="none">
+              <type name="Trapezoid" c:type="GdkTrapezoid*"/>
+            </parameter>
+            <parameter name="n_trapezoids" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="ref_cairo_surface">
+        <callback name="ref_cairo_surface" c:type="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">
+        <callback name="get_source_drawable" c:type="get_source_drawable">
+          <return-value transfer-ownership="full">
+            <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" c:type="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" c:type="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="int" c:type="int"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_drawable_with_src">
+        <callback name="draw_drawable_with_src"
+                  c:type="draw_drawable_with_src">
+          <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="gc" transfer-ownership="none">
+              <type name="GC" c:type="GdkGC*"/>
+            </parameter>
+            <parameter name="src" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+            <parameter name="xsrc" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="ysrc" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="xdest" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="ydest" 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>
+            <parameter name="original_src" transfer-ownership="none">
+              <type name="Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gdk_reserved7">
+        <callback name="gdk_reserved7" c:type="_gdk_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gdk_reserved9">
+        <callback name="gdk_reserved9" c:type="_gdk_reserved9">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gdk_reserved10">
+        <callback name="gdk_reserved10" c:type="_gdk_reserved10">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gdk_reserved11">
+        <callback name="gdk_reserved11" c:type="_gdk_reserved11">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gdk_reserved12">
+        <callback name="gdk_reserved12" c:type="_gdk_reserved12">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gdk_reserved13">
+        <callback name="gdk_reserved13" c:type="_gdk_reserved13">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gdk_reserved14">
+        <callback name="gdk_reserved14" c:type="_gdk_reserved14">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gdk_reserved15">
+        <callback name="gdk_reserved15" c:type="_gdk_reserved15">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <constant name="Dstroke" value="464">
+      <type name="int"/>
+    </constant>
+    <constant name="E" value="69">
+      <type name="int"/>
+    </constant>
+    <constant name="ENG" value="957">
+      <type name="int"/>
+    </constant>
+    <constant name="ETH" value="208">
+      <type name="int"/>
+    </constant>
+    <constant name="Eabovedot" value="972">
+      <type name="int"/>
+    </constant>
+    <constant name="Eacute" value="201">
+      <type name="int"/>
+    </constant>
+    <constant name="Ebelowdot" value="16785080">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecaron" value="460">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecircumflex" value="202">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecircumflexacute" value="16785086">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecircumflexbelowdot" value="16785094">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecircumflexgrave" value="16785088">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecircumflexhook" value="16785090">
+      <type name="int"/>
+    </constant>
+    <constant name="Ecircumflextilde" value="16785092">
+      <type name="int"/>
+    </constant>
+    <constant name="EcuSign" value="16785568">
+      <type name="int"/>
+    </constant>
+    <constant name="Ediaeresis" value="203">
+      <type name="int"/>
+    </constant>
+    <constant name="Egrave" value="200">
+      <type name="int"/>
+    </constant>
+    <constant name="Ehook" value="16785082">
+      <type name="int"/>
+    </constant>
+    <constant name="Eisu_Shift" value="65327">
+      <type name="int"/>
+    </constant>
+    <constant name="Eisu_toggle" value="65328">
+      <type name="int"/>
+    </constant>
+    <constant name="Eject" value="269025068">
+      <type name="int"/>
+    </constant>
+    <constant name="Emacron" value="938">
+      <type name="int"/>
+    </constant>
+    <constant name="End" value="65367">
+      <type name="int"/>
+    </constant>
+    <constant name="Eogonek" value="458">
+      <type name="int"/>
+    </constant>
+    <constant name="Escape" value="65307">
+      <type name="int"/>
+    </constant>
+    <constant name="Eth" value="208">
+      <type name="int"/>
+    </constant>
+    <constant name="Etilde" value="16785084">
+      <type name="int"/>
+    </constant>
+    <constant name="EuroSign" value="8364">
+      <type name="int"/>
+    </constant>
+    <union name="Event"
+           c:type="GdkEvent"
+           glib:type-name="GdkEvent"
+           glib:get-type="gdk_event_get_type">
+      <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"
+                   doc="Creates a new event of the given type. All fields are set to 0.
+should be freed with gdk_event_free()."
+                   version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GdkEvent*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="EventType" c:type="GdkEventType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="put"
+              c:identifier="gdk_event_put"
+              doc="Appends a copy of the given event onto the front of the event
+queue for event-&gt;any.window&apos;s display, or the default event
+queue if event-&gt;any.window is %NULL. See gdk_display_put_event().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="gdk_event_copy"
+              doc="Copies a #GdkEvent, copying or incrementing the reference count of the
+resources associated with it (e.g. #GdkWindow&apos;s and strings).
+gdk_event_free().">
+        <return-value transfer-ownership="full">
+          <type name="Event" c:type="GdkEvent*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gdk_event_free"
+              doc="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_get_graphics_expose() and gdk_event_copy().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_time"
+              c:identifier="gdk_event_get_time"
+              doc="Returns the time stamp from @event, if there is one; otherwise
+returns #GDK_CURRENT_TIME. If @event is %NULL, returns #GDK_CURRENT_TIME.">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <method name="get_state"
+              c:identifier="gdk_event_get_state"
+              doc="If the event contains a &quot;state&quot; 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&apos;s treated
+as if the event had no state field.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="ModifierType" c:type="GdkModifierType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_coords"
+              c:identifier="gdk_event_get_coords"
+              doc="Extract the event window relative x/y coordinates from an event.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_win" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="y_win" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_root_coords"
+              c:identifier="gdk_event_get_root_coords"
+              doc="Extract the root window relative x/y coordinates from an event.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_root" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="y_root" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_axis"
+              c:identifier="gdk_event_get_axis"
+              doc="Extract the axis value for a particular axis use from
+an event structure.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="axis_use" transfer-ownership="none">
+            <type name="AxisUse" c:type="GdkAxisUse"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_screen"
+              c:identifier="gdk_event_set_screen"
+              doc="Sets the screen for @event to @screen. The event must
+have been allocated by GTK+, for instance, by
+gdk_event_copy()."
+              version="2.2">
+        <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>
+      </method>
+      <method name="get_screen"
+              c:identifier="gdk_event_get_screen"
+              doc="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."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="send_client_message"
+              c:identifier="gdk_event_send_client_message"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="winid" transfer-ownership="none">
+            <type name="NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_clientmessage_toall"
+              c:identifier="gdk_event_send_clientmessage_toall"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </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="int8" 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="int8" c:type="gint8"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="axes" writable="1">
+        <type name="any" c:type="gdouble*"/>
+      </field>
+      <field name="state" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="button" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="Device" c:type="GdkDevice*"/>
+      </field>
+      <field name="x_root" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="y_root" writable="1">
+        <type name="double" 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="int8" 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="ushort" c:type="gushort"/>
+      </field>
+      <union name="data" c:type="data">
+        <field name="b" writable="1">
+          <array zero-terminated="0" c:type="char" fixed-size="20">
+            <type name="int8"/>
+          </array>
+        </field>
+        <field name="s" writable="1">
+          <array zero-terminated="0" c:type="short" fixed-size="10">
+            <type name="short"/>
+          </array>
+        </field>
+        <field name="l" writable="1">
+          <array zero-terminated="0" c:type="long" fixed-size="5">
+            <type name="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="int8" c:type="gint8"/>
+      </field>
+      <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="width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="int" 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="int8" c:type="gint8"/>
+      </field>
+      <field name="subwindow" writable="1">
+        <type name="Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="x_root" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="y_root" writable="1">
+        <type name="double" 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="boolean" c:type="gboolean"/>
+      </field>
+      <field name="state" writable="1">
+        <type name="uint" 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="int8" c:type="gint8"/>
+      </field>
+      <field name="context" writable="1">
+        <type name="DragContext" c:type="GdkDragContext*"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="x_root" writable="1">
+        <type name="short" c:type="gshort"/>
+      </field>
+      <field name="y_root" writable="1">
+        <type name="short" 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="int8" c:type="gint8"/>
+      </field>
+      <field name="area" writable="1">
+        <type name="Rectangle" c:type="GdkRectangle"/>
+      </field>
+      <field name="region" writable="1">
+        <type name="Region" c:type="GdkRegion*"/>
+      </field>
+      <field name="count" writable="1">
+        <type name="int" 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="int8" c:type="gint8"/>
+      </field>
+      <field name="in" writable="1">
+        <type name="int16" 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="any" 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="int8" c:type="gint8"/>
+      </field>
+      <field name="keyboard" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="implicit" writable="1">
+        <type name="boolean" 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="int8" c:type="gint8"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="state" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="keyval" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="length" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="string" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="hardware_keycode" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="group" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="is_modifier" writable="1" bits="1">
+        <type name="uint" 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="int8" c:type="gint8"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="axes" writable="1">
+        <type name="any" c:type="gdouble*"/>
+      </field>
+      <field name="state" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_hint" writable="1">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="device" writable="1">
+        <type name="Device" c:type="GdkDevice*"/>
+      </field>
+      <field name="x_root" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="y_root" writable="1">
+        <type name="double" 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="int8" 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="int8" 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="uint32" c:type="guint32"/>
+      </field>
+      <field name="selection_time" writable="1">
+        <type name="uint32" 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="int8" c:type="gint8"/>
+      </field>
+      <field name="atom" writable="1">
+        <type name="Atom" c:type="GdkAtom"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="state" writable="1">
+        <type name="uint" 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="int8" c:type="gint8"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" 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="int8" c:type="gint8"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="x" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="state" writable="1">
+        <type name="uint" 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="double" c:type="gdouble"/>
+      </field>
+      <field name="y_root" writable="1">
+        <type name="double" 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="int8" 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="uint32" 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="int8" 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="int8" 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="int8" 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>
+    <constant name="Excel" value="269025116">
+      <type name="int"/>
+    </constant>
+    <constant name="Execute" value="65378">
+      <type name="int"/>
+    </constant>
+    <constant name="Explorer" value="269025117">
+      <type name="int"/>
+    </constant>
+    <enumeration name="ExtensionMode"
+                 glib:type-name="GdkExtensionMode"
+                 glib:get-type="gdk_extension_mode_get_type"
+                 c:type="GdkExtensionMode">
+      <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>
+    <constant name="F" value="70">
+      <type name="int"/>
+    </constant>
+    <constant name="F1" value="65470">
+      <type name="int"/>
+    </constant>
+    <constant name="F10" value="65479">
+      <type name="int"/>
+    </constant>
+    <constant name="F11" value="65480">
+      <type name="int"/>
+    </constant>
+    <constant name="F12" value="65481">
+      <type name="int"/>
+    </constant>
+    <constant name="F13" value="65482">
+      <type name="int"/>
+    </constant>
+    <constant name="F14" value="65483">
+      <type name="int"/>
+    </constant>
+    <constant name="F15" value="65484">
+      <type name="int"/>
+    </constant>
+    <constant name="F16" value="65485">
+      <type name="int"/>
+    </constant>
+    <constant name="F17" value="65486">
+      <type name="int"/>
+    </constant>
+    <constant name="F18" value="65487">
+      <type name="int"/>
+    </constant>
+    <constant name="F19" value="65488">
+      <type name="int"/>
+    </constant>
+    <constant name="F2" value="65471">
+      <type name="int"/>
+    </constant>
+    <constant name="F20" value="65489">
+      <type name="int"/>
+    </constant>
+    <constant name="F21" value="65490">
+      <type name="int"/>
+    </constant>
+    <constant name="F22" value="65491">
+      <type name="int"/>
+    </constant>
+    <constant name="F23" value="65492">
+      <type name="int"/>
+    </constant>
+    <constant name="F24" value="65493">
+      <type name="int"/>
+    </constant>
+    <constant name="F25" value="65494">
+      <type name="int"/>
+    </constant>
+    <constant name="F26" value="65495">
+      <type name="int"/>
+    </constant>
+    <constant name="F27" value="65496">
+      <type name="int"/>
+    </constant>
+    <constant name="F28" value="65497">
+      <type name="int"/>
+    </constant>
+    <constant name="F29" value="65498">
+      <type name="int"/>
+    </constant>
+    <constant name="F3" value="65472">
+      <type name="int"/>
+    </constant>
+    <constant name="F30" value="65499">
+      <type name="int"/>
+    </constant>
+    <constant name="F31" value="65500">
+      <type name="int"/>
+    </constant>
+    <constant name="F32" value="65501">
+      <type name="int"/>
+    </constant>
+    <constant name="F33" value="65502">
+      <type name="int"/>
+    </constant>
+    <constant name="F34" value="65503">
+      <type name="int"/>
+    </constant>
+    <constant name="F35" value="65504">
+      <type name="int"/>
+    </constant>
+    <constant name="F4" value="65473">
+      <type name="int"/>
+    </constant>
+    <constant name="F5" value="65474">
+      <type name="int"/>
+    </constant>
+    <constant name="F6" value="65475">
+      <type name="int"/>
+    </constant>
+    <constant name="F7" value="65476">
+      <type name="int"/>
+    </constant>
+    <constant name="F8" value="65477">
+      <type name="int"/>
+    </constant>
+    <constant name="F9" value="65478">
+      <type name="int"/>
+    </constant>
+    <constant name="FFrancSign" value="16785571">
+      <type name="int"/>
+    </constant>
+    <constant name="Fabovedot" value="16784926">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_0" value="16778992">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_1" value="16778993">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_2" value="16778994">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_3" value="16778995">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_4" value="16778996">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_5" value="16778997">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_6" value="16778998">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_7" value="16778999">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_8" value="16779000">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_9" value="16779001">
+      <type name="int"/>
+    </constant>
+    <constant name="Farsi_yeh" value="16778956">
+      <type name="int"/>
+    </constant>
+    <constant name="Favorites" value="269025072">
+      <type name="int"/>
+    </constant>
+    <enumeration name="Fill"
+                 glib:type-name="GdkFill"
+                 glib:get-type="gdk_fill_get_type"
+                 c:type="GdkFill">
+      <member name="solid"
+              value="0"
+              c:identifier="GDK_SOLID"
+              glib:nick="solid"/>
+      <member name="tiled"
+              value="1"
+              c:identifier="GDK_TILED"
+              glib:nick="tiled"/>
+      <member name="stippled"
+              value="2"
+              c:identifier="GDK_STIPPLED"
+              glib:nick="stippled"/>
+      <member name="opaque_stippled"
+              value="3"
+              c:identifier="GDK_OPAQUE_STIPPLED"
+              glib:nick="opaque-stippled"/>
+    </enumeration>
+    <enumeration name="FillRule"
+                 glib:type-name="GdkFillRule"
+                 glib:get-type="gdk_fill_rule_get_type"
+                 c:type="GdkFillRule">
+      <member name="even_odd_rule"
+              value="0"
+              c:identifier="GDK_EVEN_ODD_RULE"
+              glib:nick="even-odd-rule"/>
+      <member name="winding_rule"
+              value="1"
+              c:identifier="GDK_WINDING_RULE"
+              glib:nick="winding-rule"/>
+    </enumeration>
+    <callback name="FilterFunc" c:type="GdkFilterFunc">
+      <return-value transfer-ownership="full">
+        <type name="FilterReturn" c:type="GdkFilterReturn"/>
+      </return-value>
+      <parameters>
+        <parameter name="xevent" transfer-ownership="none">
+          <type name="XEvent" c:type="GdkXEvent*"/>
+        </parameter>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Event" c:type="GdkEvent*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="FilterReturn"
+                 glib:type-name="GdkFilterReturn"
+                 glib:get-type="gdk_filter_return_get_type"
+                 c:type="GdkFilterReturn">
+      <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>
+    <constant name="Finance" value="269025084">
+      <type name="int"/>
+    </constant>
+    <constant name="Find" value="65384">
+      <type name="int"/>
+    </constant>
+    <constant name="First_Virtual_Screen" value="65232">
+      <type name="int"/>
+    </constant>
+    <record name="Font"
+            c:type="GdkFont"
+            glib:type-name="GdkFont"
+            glib:get-type="gdk_font_get_type">
+      <field name="type" writable="1">
+        <type name="FontType" c:type="GdkFontType"/>
+      </field>
+      <field name="ascent" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="descent" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <method name="ref"
+              c:identifier="gdk_font_ref"
+              doc="Increases the reference count of a font by one.">
+        <return-value transfer-ownership="full">
+          <type name="Font" c:type="GdkFont*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gdk_font_unref"
+              doc="Decreases the reference count of a font by one.
+If the result is zero, destroys the font.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="id"
+              c:identifier="gdk_font_id"
+              doc="Returns the X Font ID for the given font.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="equal"
+              c:identifier="gdk_font_equal"
+              doc="Compares two fonts for equality. Single fonts compare equal
+if they have the same X font ID. This operation does
+not currently work correctly for fontsets.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fontb" transfer-ownership="none">
+            <type name="Font" c:type="GdkFont*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_display" c:identifier="gdk_font_get_display">
+        <return-value transfer-ownership="full">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="FontType"
+                 glib:type-name="GdkFontType"
+                 glib:get-type="gdk_font_type_get_type"
+                 c:type="GdkFontType">
+      <member name="font"
+              value="0"
+              c:identifier="GDK_FONT_FONT"
+              glib:nick="font"/>
+      <member name="fontset"
+              value="1"
+              c:identifier="GDK_FONT_FONTSET"
+              glib:nick="fontset"/>
+    </enumeration>
+    <constant name="Forward" value="269025063">
+      <type name="int"/>
+    </constant>
+    <constant name="FrameBack" value="269025181">
+      <type name="int"/>
+    </constant>
+    <constant name="FrameForward" value="269025182">
+      <type name="int"/>
+    </constant>
+    <enumeration name="Function"
+                 glib:type-name="GdkFunction"
+                 glib:get-type="gdk_function_get_type"
+                 c:type="GdkFunction">
+      <member name="copy" value="0" c:identifier="GDK_COPY" glib:nick="copy"/>
+      <member name="invert"
+              value="1"
+              c:identifier="GDK_INVERT"
+              glib:nick="invert"/>
+      <member name="xor" value="2" c:identifier="GDK_XOR" glib:nick="xor"/>
+      <member name="clear"
+              value="3"
+              c:identifier="GDK_CLEAR"
+              glib:nick="clear"/>
+      <member name="and" value="4" c:identifier="GDK_AND" glib:nick="and"/>
+      <member name="and_reverse"
+              value="5"
+              c:identifier="GDK_AND_REVERSE"
+              glib:nick="and-reverse"/>
+      <member name="and_invert"
+              value="6"
+              c:identifier="GDK_AND_INVERT"
+              glib:nick="and-invert"/>
+      <member name="noop" value="7" c:identifier="GDK_NOOP" glib:nick="noop"/>
+      <member name="or" value="8" c:identifier="GDK_OR" glib:nick="or"/>
+      <member name="equiv"
+              value="9"
+              c:identifier="GDK_EQUIV"
+              glib:nick="equiv"/>
+      <member name="or_reverse"
+              value="10"
+              c:identifier="GDK_OR_REVERSE"
+              glib:nick="or-reverse"/>
+      <member name="copy_invert"
+              value="11"
+              c:identifier="GDK_COPY_INVERT"
+              glib:nick="copy-invert"/>
+      <member name="or_invert"
+              value="12"
+              c:identifier="GDK_OR_INVERT"
+              glib:nick="or-invert"/>
+      <member name="nand" value="13" c:identifier="GDK_NAND" glib:nick="nand"/>
+      <member name="nor" value="14" c:identifier="GDK_NOR" glib:nick="nor"/>
+      <member name="set" value="15" c:identifier="GDK_SET" glib:nick="set"/>
+    </enumeration>
+    <constant name="G" value="71">
+      <type name="int"/>
+    </constant>
+    <class name="GC"
+           c:type="GdkGC"
+           parent="GObject.Object"
+           glib:type-name="GdkGC"
+           glib:get-type="gdk_gc_get_type"
+           glib:type-struct="GCClass">
+      <constructor name="new"
+                   c:identifier="gdk_gc_new"
+                   doc="with drawables of the same depth as this one.
+Create a new graphics context with default values.">
+        <return-value transfer-ownership="full">
+          <type name="GC" c:type="GdkGC*"/>
+        </return-value>
+        <parameters>
+          <parameter name="drawable" transfer-ownership="none">
+            <type name="Drawable" c:type="GdkDrawable*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_values"
+                   c:identifier="gdk_gc_new_with_values"
+                   doc="with drawables of the same depth as this one.
+are set.
+Create a new GC with the given initial values.">
+        <return-value transfer-ownership="full">
+          <type name="GC" c:type="GdkGC*"/>
+        </return-value>
+        <parameters>
+          <parameter name="drawable" transfer-ownership="none">
+            <type name="Drawable" c:type="GdkDrawable*"/>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <type name="GCValues" c:type="GdkGCValues*"/>
+          </parameter>
+          <parameter name="values_mask" transfer-ownership="none">
+            <type name="GCValuesMask" c:type="GdkGCValuesMask"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="get_values" invoker="get_values">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="values" transfer-ownership="none">
+            <type name="GCValues" c:type="GdkGCValues*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_values">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="values" transfer-ownership="none">
+            <type name="GCValues" c:type="GdkGCValues*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="GCValuesMask" c:type="GdkGCValuesMask"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_dashes" invoker="set_dashes">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dash_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="dash_list" transfer-ownership="none">
+            <type name="int8" c:type="gint8"/>
+          </parameter>
+          <parameter name="n" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="ref"
+              c:identifier="gdk_gc_ref"
+              doc="Deprecated function; use g_object_ref() instead."
+              deprecated="Use g_object_ref() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="full">
+          <type name="GC" c:type="GdkGC*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gdk_gc_unref"
+              doc="Decrement the reference count of @gc."
+              deprecated="Use g_object_unref() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_values"
+              c:identifier="gdk_gc_get_values"
+              doc="Retrieves the current values from a graphics context. Note that
+only the pixel values of the @values-&gt;foreground and @values-&gt;background
+are filled, use gdk_colormap_query_color() to obtain the rgb values
+if you need them.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="values" transfer-ownership="none">
+            <type name="GCValues" c:type="GdkGCValues*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_values"
+              c:identifier="gdk_gc_set_values"
+              doc="Sets attributes of a graphics context in bulk. For each flag set in
+set as the new value for @gc. If you&apos;re only setting a few values
+on @gc, calling individual &quot;setter&quot; functions is likely more
+convenient.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="values" transfer-ownership="none">
+            <type name="GCValues" c:type="GdkGCValues*"/>
+          </parameter>
+          <parameter name="values_mask" transfer-ownership="none">
+            <type name="GCValuesMask" c:type="GdkGCValuesMask"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_foreground"
+              c:identifier="gdk_gc_set_foreground"
+              doc="Sets the foreground color for a graphics context.
+Note that this function uses @color-&gt;pixel, use
+gdk_gc_set_rgb_fg_color() to specify the foreground
+color as red, green, blue components.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_background"
+              c:identifier="gdk_gc_set_background"
+              doc="Sets the background color for a graphics context.
+Note that this function uses @color-&gt;pixel, use
+gdk_gc_set_rgb_bg_color() to specify the background
+color as red, green, blue components.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_font"
+              c:identifier="gdk_gc_set_font"
+              doc="Sets the font for a graphics context. (Note that
+all text-drawing functions in GDK take a @font
+argument; the value set here is used when that
+argument is %NULL.)">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font" transfer-ownership="none">
+            <type name="Font" c:type="GdkFont*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_function"
+              c:identifier="gdk_gc_set_function"
+              doc="Determines how the current pixel values and the
+pixel values being drawn are combined to produce
+the final pixel values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="function" transfer-ownership="none">
+            <type name="Function" c:type="GdkFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fill"
+              c:identifier="gdk_gc_set_fill"
+              doc="Set the fill mode for a graphics context.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fill" transfer-ownership="none">
+            <type name="Fill" c:type="GdkFill"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tile"
+              c:identifier="gdk_gc_set_tile"
+              doc="Set a tile pixmap for a graphics context.
+This will only be used if the fill mode
+is %GDK_TILED.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tile" transfer-ownership="none">
+            <type name="Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_stipple"
+              c:identifier="gdk_gc_set_stipple"
+              doc="Set the stipple bitmap for a graphics context. The
+stipple will only be used if the fill mode is
+%GDK_STIPPLED or %GDK_OPAQUE_STIPPLED.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stipple" transfer-ownership="none">
+            <type name="Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_ts_origin"
+              c:identifier="gdk_gc_set_ts_origin"
+              doc="Set the origin when using tiles or stipples with
+the GC. The tile or stipple will be aligned such
+that the upper left corner of the tile or stipple
+will coincide with this point.">
+        <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>
+        </parameters>
+      </method>
+      <method name="set_clip_origin"
+              c:identifier="gdk_gc_set_clip_origin"
+              doc="Sets the origin of the clip mask. The coordinates are
+interpreted relative to the upper-left corner of
+the destination drawable of the current operation.">
+        <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>
+        </parameters>
+      </method>
+      <method name="set_clip_mask"
+              c:identifier="gdk_gc_set_clip_mask"
+              doc="Sets the clip mask for a graphics context from a bitmap.
+The clip mask is interpreted relative to the clip
+origin. (See gdk_gc_set_clip_origin()).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_clip_rectangle"
+              c:identifier="gdk_gc_set_clip_rectangle"
+              doc="Sets the clip mask for a graphics context from a
+rectangle. The clip mask is interpreted relative to the clip
+origin. (See gdk_gc_set_clip_origin()).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rectangle" transfer-ownership="none">
+            <type name="Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_clip_region"
+              c:identifier="gdk_gc_set_clip_region"
+              doc="Sets the clip mask for a graphics context from a region structure.
+The clip mask is interpreted relative to the clip origin. (See
+gdk_gc_set_clip_origin()).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="region" transfer-ownership="none">
+            <type name="Region" c:type="GdkRegion*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_subwindow"
+              c:identifier="gdk_gc_set_subwindow"
+              doc="Sets how drawing with this GC on a window will affect child
+windows of that window.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="SubwindowMode" c:type="GdkSubwindowMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_exposures"
+              c:identifier="gdk_gc_set_exposures"
+              doc="Sets whether copying non-visible portions of a drawable
+using this graphics context generate exposure events
+for the corresponding regions of the destination
+drawable. (See gdk_draw_drawable()).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="exposures" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_line_attributes"
+              c:identifier="gdk_gc_set_line_attributes"
+              doc="Sets various attributes of how lines are drawn. See
+the corresponding members of #GdkGCValues for full
+explanations of the arguments.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="line_width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="line_style" transfer-ownership="none">
+            <type name="LineStyle" c:type="GdkLineStyle"/>
+          </parameter>
+          <parameter name="cap_style" transfer-ownership="none">
+            <type name="CapStyle" c:type="GdkCapStyle"/>
+          </parameter>
+          <parameter name="join_style" transfer-ownership="none">
+            <type name="JoinStyle" c:type="GdkJoinStyle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_dashes"
+              c:identifier="gdk_gc_set_dashes"
+              doc="Sets the way dashed-lines are drawn. Lines will be
+drawn with alternating on and off segments of the
+lengths specified in @dash_list. The manner in
+which the on and off segments are drawn is determined
+by the @line_style value of the GC. (This can
+be changed with gdk_gc_set_line_attributes().)
+The @dash_offset defines the phase of the pattern,
+specifying how many pixels into the dash-list the pattern
+should actually begin.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dash_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="dash_list" transfer-ownership="none">
+            <type name="int8" c:type="gint8"/>
+          </parameter>
+          <parameter name="n" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="offset"
+              c:identifier="gdk_gc_offset"
+              doc="Offset attributes such as the clip and tile-stipple origins
+of the GC so that drawing at x - x_offset, y - y_offset with
+the offset GC  has the same effect as drawing at x, y with the original
+GC.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy"
+              c:identifier="gdk_gc_copy"
+              doc="Copy the set of values from one graphics context
+onto another graphics context.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_gc" transfer-ownership="none">
+            <type name="GC" c:type="GdkGC*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_colormap"
+              c:identifier="gdk_gc_set_colormap"
+              doc="Sets the colormap for the GC to the given colormap. The depth
+of the colormap&apos;s visual must match the depth of the drawable
+for which the GC was created.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="colormap" transfer-ownership="none">
+            <type name="Colormap" c:type="GdkColormap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_colormap"
+              c:identifier="gdk_gc_get_colormap"
+              doc="Retrieves the colormap for a given GC, if it exists.
+A GC will have a colormap if the drawable for which it was created
+has a colormap, or if a colormap was set explicitely with
+gdk_gc_set_colormap.">
+        <return-value transfer-ownership="full">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </method>
+      <method name="set_rgb_fg_color"
+              c:identifier="gdk_gc_set_rgb_fg_color"
+              doc="Set the foreground color of a GC using an unallocated color. The
+pixel value for the color will be determined using GdkRGB. If the
+colormap for the GC has not previously been initialized for GdkRGB,
+then for pseudo-color colormaps (colormaps with a small modifiable
+number of colors), a colorcube will be allocated in the colormap.
+Calling this function for a GC without a colormap is an error.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_rgb_bg_color"
+              c:identifier="gdk_gc_set_rgb_bg_color"
+              doc="Set the background color of a GC using an unallocated color. The
+pixel value for the color will be determined using GdkRGB. If the
+colormap for the GC has not previously been initialized for GdkRGB,
+then for pseudo-color colormaps (colormaps with a small modifiable
+number of colors), a colorcube will be allocated in the colormap.
+Calling this function for a GC without a colormap is an error.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_screen"
+              c:identifier="gdk_gc_get_screen"
+              doc="Gets the #GdkScreen for which @gc was created"
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="clip_x_origin">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="clip_y_origin">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="ts_x_origin">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="ts_y_origin">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="colormap">
+        <type name="Colormap" c:type="GdkColormap*"/>
+      </field>
+    </class>
+    <record name="GCClass" c:type="GdkGCClass" glib:is-gtype-struct-for="GC">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="get_values">
+        <callback name="get_values" c:type="get_values">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="gc" transfer-ownership="none">
+              <type name="GC" c:type="GdkGC*"/>
+            </parameter>
+            <parameter name="values" transfer-ownership="none">
+              <type name="GCValues" c:type="GdkGCValues*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_values">
+        <callback name="set_values" c:type="set_values">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="gc" transfer-ownership="none">
+              <type name="GC" c:type="GdkGC*"/>
+            </parameter>
+            <parameter name="values" transfer-ownership="none">
+              <type name="GCValues" c:type="GdkGCValues*"/>
+            </parameter>
+            <parameter name="mask" transfer-ownership="none">
+              <type name="GCValuesMask" c:type="GdkGCValuesMask"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_dashes">
+        <callback name="set_dashes" c:type="set_dashes">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="gc" transfer-ownership="none">
+              <type name="GC" c:type="GdkGC*"/>
+            </parameter>
+            <parameter name="dash_offset" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="dash_list" transfer-ownership="none">
+              <type name="int8" c:type="gint8"/>
+            </parameter>
+            <parameter name="n" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gdk_reserved1">
+        <callback name="gdk_reserved1" c:type="_gdk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gdk_reserved2">
+        <callback name="gdk_reserved2" c:type="_gdk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gdk_reserved3">
+        <callback name="gdk_reserved3" c:type="_gdk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gdk_reserved4">
+        <callback name="gdk_reserved4" c:type="_gdk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="GCValues" c:type="GdkGCValues">
+      <field name="foreground" writable="1">
+        <type name="Color" c:type="GdkColor"/>
+      </field>
+      <field name="background" writable="1">
+        <type name="Color" c:type="GdkColor"/>
+      </field>
+      <field name="font" writable="1">
+        <type name="Font" c:type="GdkFont*"/>
+      </field>
+      <field name="function" writable="1">
+        <type name="Function" c:type="GdkFunction"/>
+      </field>
+      <field name="fill" writable="1">
+        <type name="Fill" c:type="GdkFill"/>
+      </field>
+      <field name="tile" writable="1">
+        <type name="Pixmap" c:type="GdkPixmap*"/>
+      </field>
+      <field name="stipple" writable="1">
+        <type name="Pixmap" c:type="GdkPixmap*"/>
+      </field>
+      <field name="clip_mask" writable="1">
+        <type name="Pixmap" c:type="GdkPixmap*"/>
+      </field>
+      <field name="subwindow_mode" writable="1">
+        <type name="SubwindowMode" c:type="GdkSubwindowMode"/>
+      </field>
+      <field name="ts_x_origin" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="ts_y_origin" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="clip_x_origin" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="clip_y_origin" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="graphics_exposures" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="line_width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="line_style" writable="1">
+        <type name="LineStyle" c:type="GdkLineStyle"/>
+      </field>
+      <field name="cap_style" writable="1">
+        <type name="CapStyle" c:type="GdkCapStyle"/>
+      </field>
+      <field name="join_style" writable="1">
+        <type name="JoinStyle" c:type="GdkJoinStyle"/>
+      </field>
+    </record>
+    <bitfield name="GCValuesMask"
+              glib:type-name="GdkGCValuesMask"
+              glib:get-type="gdk_gc_values_mask_get_type"
+              c:type="GdkGCValuesMask">
+      <member name="foreground"
+              value="1"
+              c:identifier="GDK_GC_FOREGROUND"
+              glib:nick="foreground"/>
+      <member name="background"
+              value="2"
+              c:identifier="GDK_GC_BACKGROUND"
+              glib:nick="background"/>
+      <member name="font"
+              value="4"
+              c:identifier="GDK_GC_FONT"
+              glib:nick="font"/>
+      <member name="function"
+              value="8"
+              c:identifier="GDK_GC_FUNCTION"
+              glib:nick="function"/>
+      <member name="fill"
+              value="16"
+              c:identifier="GDK_GC_FILL"
+              glib:nick="fill"/>
+      <member name="tile"
+              value="32"
+              c:identifier="GDK_GC_TILE"
+              glib:nick="tile"/>
+      <member name="stipple"
+              value="64"
+              c:identifier="GDK_GC_STIPPLE"
+              glib:nick="stipple"/>
+      <member name="clip_mask"
+              value="128"
+              c:identifier="GDK_GC_CLIP_MASK"
+              glib:nick="clip-mask"/>
+      <member name="subwindow"
+              value="256"
+              c:identifier="GDK_GC_SUBWINDOW"
+              glib:nick="subwindow"/>
+      <member name="ts_x_origin"
+              value="512"
+              c:identifier="GDK_GC_TS_X_ORIGIN"
+              glib:nick="ts-x-origin"/>
+      <member name="ts_y_origin"
+              value="1024"
+              c:identifier="GDK_GC_TS_Y_ORIGIN"
+              glib:nick="ts-y-origin"/>
+      <member name="clip_x_origin"
+              value="2048"
+              c:identifier="GDK_GC_CLIP_X_ORIGIN"
+              glib:nick="clip-x-origin"/>
+      <member name="clip_y_origin"
+              value="4096"
+              c:identifier="GDK_GC_CLIP_Y_ORIGIN"
+              glib:nick="clip-y-origin"/>
+      <member name="exposures"
+              value="8192"
+              c:identifier="GDK_GC_EXPOSURES"
+              glib:nick="exposures"/>
+      <member name="line_width"
+              value="16384"
+              c:identifier="GDK_GC_LINE_WIDTH"
+              glib:nick="line-width"/>
+      <member name="line_style"
+              value="32768"
+              c:identifier="GDK_GC_LINE_STYLE"
+              glib:nick="line-style"/>
+      <member name="cap_style"
+              value="65536"
+              c:identifier="GDK_GC_CAP_STYLE"
+              glib:nick="cap-style"/>
+      <member name="join_style"
+              value="131072"
+              c:identifier="GDK_GC_JOIN_STYLE"
+              glib:nick="join-style"/>
+    </bitfield>
+    <constant name="Gabovedot" value="725">
+      <type name="int"/>
+    </constant>
+    <constant name="Game" value="269025118">
+      <type name="int"/>
+    </constant>
+    <constant name="Gbreve" value="683">
+      <type name="int"/>
+    </constant>
+    <constant name="Gcaron" value="16777702">
+      <type name="int"/>
+    </constant>
+    <constant name="Gcedilla" value="939">
+      <type name="int"/>
+    </constant>
+    <constant name="Gcircumflex" value="728">
+      <type name="int"/>
+    </constant>
+    <record name="Geometry" c:type="GdkGeometry">
+      <field name="min_width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="min_height" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max_width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max_height" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="base_width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="base_height" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="width_inc" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="height_inc" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="min_aspect" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="max_aspect" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="win_gravity" writable="1">
+        <type name="Gravity" c:type="GdkGravity"/>
+      </field>
+    </record>
+    <constant name="Georgian_an" value="16781520">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_ban" value="16781521">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_can" value="16781546">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_char" value="16781549">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_chin" value="16781545">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_cil" value="16781548">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_don" value="16781523">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_en" value="16781524">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_fi" value="16781558">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_gan" value="16781522">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_ghan" value="16781542">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_hae" value="16781552">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_har" value="16781556">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_he" value="16781553">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_hie" value="16781554">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_hoe" value="16781557">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_in" value="16781528">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_jhan" value="16781551">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_jil" value="16781547">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_kan" value="16781529">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_khar" value="16781541">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_las" value="16781530">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_man" value="16781531">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_nar" value="16781532">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_on" value="16781533">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_par" value="16781534">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_phar" value="16781540">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_qar" value="16781543">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_rae" value="16781536">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_san" value="16781537">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_shin" value="16781544">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_tan" value="16781527">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_tar" value="16781538">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_un" value="16781539">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_vin" value="16781525">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_we" value="16781555">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_xan" value="16781550">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_zen" value="16781526">
+      <type name="int"/>
+    </constant>
+    <constant name="Georgian_zhar" value="16781535">
+      <type name="int"/>
+    </constant>
+    <constant name="Go" value="269025119">
+      <type name="int"/>
+    </constant>
+    <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">
+      <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>
+    <constant name="Greek_ALPHA" value="1985">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_ALPHAaccent" value="1953">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_BETA" value="1986">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_CHI" value="2007">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_DELTA" value="1988">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_EPSILON" value="1989">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_EPSILONaccent" value="1954">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_ETA" value="1991">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_ETAaccent" value="1955">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_GAMMA" value="1987">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_IOTA" value="1993">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_IOTAaccent" value="1956">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_IOTAdiaeresis" value="1957">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_IOTAdieresis" value="1957">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_KAPPA" value="1994">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_LAMBDA" value="1995">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_LAMDA" value="1995">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_MU" value="1996">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_NU" value="1997">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_OMEGA" value="2009">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_OMEGAaccent" value="1963">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_OMICRON" value="1999">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_OMICRONaccent" value="1959">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_PHI" value="2006">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_PI" value="2000">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_PSI" value="2008">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_RHO" value="2001">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_SIGMA" value="2002">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_TAU" value="2004">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_THETA" value="1992">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_UPSILON" value="2005">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_UPSILONaccent" value="1960">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_UPSILONdieresis" value="1961">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_XI" value="1998">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_ZETA" value="1990">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_accentdieresis" value="1966">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_alpha" value="2017">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_alphaaccent" value="1969">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_beta" value="2018">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_chi" value="2039">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_delta" value="2020">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_epsilon" value="2021">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_epsilonaccent" value="1970">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_eta" value="2023">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_etaaccent" value="1971">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_finalsmallsigma" value="2035">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_gamma" value="2019">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_horizbar" value="1967">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_iota" value="2025">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_iotaaccent" value="1972">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_iotaaccentdieresis" value="1974">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_iotadieresis" value="1973">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_kappa" value="2026">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_lambda" value="2027">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_lamda" value="2027">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_mu" value="2028">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_nu" value="2029">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_omega" value="2041">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_omegaaccent" value="1979">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_omicron" value="2031">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_omicronaccent" value="1975">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_phi" value="2038">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_pi" value="2032">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_psi" value="2040">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_rho" value="2033">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_sigma" value="2034">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_tau" value="2036">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_theta" value="2024">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_upsilon" value="2037">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_upsilonaccent" value="1976">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_upsilonaccentdieresis" value="1978">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_upsilondieresis" value="1977">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_xi" value="2030">
+      <type name="int"/>
+    </constant>
+    <constant name="Greek_zeta" value="2022">
+      <type name="int"/>
+    </constant>
+    <constant name="Green" value="269025188">
+      <type name="int"/>
+    </constant>
+    <constant name="H" value="72">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul" value="65329">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_A" value="3775">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_AE" value="3776">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_AraeA" value="3830">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_AraeAE" value="3831">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Banja" value="65337">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Cieuc" value="3770">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Codeinput" value="65335">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Dikeud" value="3751">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_E" value="3780">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_EO" value="3779">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_EU" value="3793">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_End" value="65331">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Hanja" value="65332">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Hieuh" value="3774">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_I" value="3795">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Ieung" value="3767">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Cieuc" value="3818">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Dikeud" value="3802">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Hieuh" value="3822">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Ieung" value="3816">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Jieuj" value="3817">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Khieuq" value="3819">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Kiyeog" value="3796">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_KiyeogSios" value="3798">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_KkogjiDalrinIeung" value="3833">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Mieum" value="3811">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Nieun" value="3799">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_NieunHieuh" value="3801">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_NieunJieuj" value="3800">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_PanSios" value="3832">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Phieuf" value="3821">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Pieub" value="3812">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_PieubSios" value="3813">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Rieul" value="3803">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulHieuh" value="3810">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulKiyeog" value="3804">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulMieum" value="3805">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulPhieuf" value="3809">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulPieub" value="3806">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulSios" value="3807">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_RieulTieut" value="3808">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Sios" value="3814">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_SsangKiyeog" value="3797">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_SsangSios" value="3815">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_Tieut" value="3820">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_J_YeorinHieuh" value="3834">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Jamo" value="65333">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Jeonja" value="65336">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Jieuj" value="3768">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Khieuq" value="3771">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Kiyeog" value="3745">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_KiyeogSios" value="3747">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_KkogjiDalrinIeung" value="3827">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Mieum" value="3761">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_MultipleCandidate" value="65341">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Nieun" value="3748">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_NieunHieuh" value="3750">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_NieunJieuj" value="3749">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_O" value="3783">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_OE" value="3786">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_PanSios" value="3826">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Phieuf" value="3773">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Pieub" value="3762">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_PieubSios" value="3764">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_PostHanja" value="65339">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_PreHanja" value="65338">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_PreviousCandidate" value="65342">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Rieul" value="3753">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulHieuh" value="3760">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulKiyeog" value="3754">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulMieum" value="3755">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulPhieuf" value="3759">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulPieub" value="3756">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulSios" value="3757">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulTieut" value="3758">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_RieulYeorinHieuh" value="3823">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Romaja" value="65334">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SingleCandidate" value="65340">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Sios" value="3765">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Special" value="65343">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SsangDikeud" value="3752">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SsangJieuj" value="3769">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SsangKiyeog" value="3746">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SsangPieub" value="3763">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SsangSios" value="3766">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Start" value="65330">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SunkyeongeumMieum" value="3824">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SunkyeongeumPhieuf" value="3828">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_SunkyeongeumPieub" value="3825">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_Tieut" value="3772">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_U" value="3788">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_WA" value="3784">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_WAE" value="3785">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_WE" value="3790">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_WEO" value="3789">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_WI" value="3791">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YA" value="3777">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YAE" value="3778">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YE" value="3782">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YEO" value="3781">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YI" value="3794">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YO" value="3787">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YU" value="3792">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_YeorinHieuh" value="3829">
+      <type name="int"/>
+    </constant>
+    <constant name="Hangul_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="Hankaku" value="65321">
+      <type name="int"/>
+    </constant>
+    <constant name="Hcircumflex" value="678">
+      <type name="int"/>
+    </constant>
+    <constant name="Hebrew_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="Help" value="65386">
+      <type name="int"/>
+    </constant>
+    <constant name="Henkan" value="65315">
+      <type name="int"/>
+    </constant>
+    <constant name="Henkan_Mode" value="65315">
+      <type name="int"/>
+    </constant>
+    <constant name="Hibernate" value="269025192">
+      <type name="int"/>
+    </constant>
+    <constant name="Hiragana" value="65317">
+      <type name="int"/>
+    </constant>
+    <constant name="Hiragana_Katakana" value="65319">
+      <type name="int"/>
+    </constant>
+    <constant name="History" value="269025079">
+      <type name="int"/>
+    </constant>
+    <constant name="Home" value="65360">
+      <type name="int"/>
+    </constant>
+    <constant name="HomePage" value="269025048">
+      <type name="int"/>
+    </constant>
+    <constant name="HotLinks" value="269025082">
+      <type name="int"/>
+    </constant>
+    <constant name="Hstroke" value="673">
+      <type name="int"/>
+    </constant>
+    <constant name="Hyper_L" value="65517">
+      <type name="int"/>
+    </constant>
+    <constant name="Hyper_R" value="65518">
+      <type name="int"/>
+    </constant>
+    <constant name="I" value="73">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Center_Object" value="65075">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Continuous_Underline" value="65072">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Discontinuous_Underline" value="65073">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Emphasize" value="65074">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Enter" value="65076">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Down" value="65071">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Left" value="65068">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Right" value="65069">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Fast_Cursor_Up" value="65070">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_First_Group" value="65036">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_First_Group_Lock" value="65037">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Group_Latch" value="65030">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Group_Lock" value="65031">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Group_Shift" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Last_Group" value="65038">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Last_Group_Lock" value="65039">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Left_Tab" value="65056">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level2_Latch" value="65026">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level3_Latch" value="65028">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level3_Lock" value="65029">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level3_Shift" value="65027">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level5_Latch" value="65042">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level5_Lock" value="65043">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Level5_Shift" value="65041">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Lock" value="65025">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Move_Line_Down" value="65058">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Move_Line_Up" value="65057">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Next_Group" value="65032">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Next_Group_Lock" value="65033">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Partial_Line_Down" value="65060">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Partial_Line_Up" value="65059">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Partial_Space_Left" value="65061">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Partial_Space_Right" value="65062">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Prev_Group" value="65034">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Prev_Group_Lock" value="65035">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Release_Both_Margins" value="65067">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Release_Margin_Left" value="65065">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Release_Margin_Right" value="65066">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Set_Margin_Left" value="65063">
+      <type name="int"/>
+    </constant>
+    <constant name="ISO_Set_Margin_Right" value="65064">
+      <type name="int"/>
+    </constant>
+    <constant name="Iabovedot" value="681">
+      <type name="int"/>
+    </constant>
+    <constant name="Iacute" value="205">
+      <type name="int"/>
+    </constant>
+    <constant name="Ibelowdot" value="16785098">
+      <type name="int"/>
+    </constant>
+    <constant name="Ibreve" value="16777516">
+      <type name="int"/>
+    </constant>
+    <constant name="Icircumflex" value="206">
+      <type name="int"/>
+    </constant>
+    <constant name="Idiaeresis" value="207">
+      <type name="int"/>
+    </constant>
+    <constant name="Igrave" value="204">
+      <type name="int"/>
+    </constant>
+    <constant name="Ihook" value="16785096">
+      <type name="int"/>
+    </constant>
+    <constant name="Imacron" value="975">
+      <type name="int"/>
+    </constant>
+    <class name="Image"
+           c:type="GdkImage"
+           parent="GObject.Object"
+           glib:type-name="GdkImage"
+           glib:get-type="gdk_image_get_type"
+           glib:type-struct="ImageClass">
+      <constructor name="new" c:identifier="gdk_image_new">
+        <return-value transfer-ownership="full">
+          <type name="Image" c:type="GdkImage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="ImageType" c:type="GdkImageType"/>
+          </parameter>
+          <parameter name="visual" transfer-ownership="none">
+            <type name="Visual" c:type="GdkVisual*"/>
+          </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>
+      </constructor>
+      <function name="get"
+                c:identifier="gdk_image_get"
+                doc="This is a deprecated wrapper for gdk_drawable_get_image();
+most cases gdk_pixbuf_get_from_drawable() is the most convenient
+choice.">
+        <return-value transfer-ownership="full">
+          <type name="Image" c:type="GdkImage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="drawable" transfer-ownership="none">
+            <type name="Drawable" c:type="GdkDrawable*"/>
+          </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>
+      </function>
+      <method name="ref"
+              c:identifier="gdk_image_ref"
+              doc="Deprecated function; use g_object_ref() instead."
+              deprecated="Use g_object_ref() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="full">
+          <type name="Image" c:type="GdkImage*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gdk_image_unref"
+              doc="Deprecated function; use g_object_unref() instead."
+              deprecated="Use g_object_unref() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="put_pixel" c:identifier="gdk_image_put_pixel">
+        <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="pixel" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixel" c:identifier="gdk_image_get_pixel">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </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>
+        </parameters>
+      </method>
+      <method name="set_colormap"
+              c:identifier="gdk_image_set_colormap"
+              doc="Sets the colormap for the image to the given colormap.  Normally
+there&apos;s no need to use this function, images are created with the
+correct colormap if you get the image from a drawable. If you
+create the image from scratch, use the colormap of the drawable you
+intend to render the image to.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="colormap" transfer-ownership="none">
+            <type name="Colormap" c:type="GdkColormap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_colormap"
+              c:identifier="gdk_image_get_colormap"
+              doc="Retrieves the colormap for a given image, if it exists.  An image
+will have a colormap if the drawable from which it was created has
+a colormap, or if a colormap was set explicitely with
+gdk_image_set_colormap().">
+        <return-value transfer-ownership="full">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="type">
+        <type name="ImageType" c:type="GdkImageType"/>
+      </field>
+      <field name="visual">
+        <type name="Visual" c:type="GdkVisual*"/>
+      </field>
+      <field name="byte_order">
+        <type name="ByteOrder" c:type="GdkByteOrder"/>
+      </field>
+      <field name="width">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="height">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="depth">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="bpp">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="bpl">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="bits_per_pixel">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="mem">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="colormap">
+        <type name="Colormap" c:type="GdkColormap*"/>
+      </field>
+      <field name="windowing_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+    </class>
+    <record name="ImageClass"
+            c:type="GdkImageClass"
+            glib:is-gtype-struct-for="Image">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <enumeration name="ImageType"
+                 glib:type-name="GdkImageType"
+                 glib:get-type="gdk_image_type_get_type"
+                 c:type="GdkImageType">
+      <member name="normal"
+              value="0"
+              c:identifier="GDK_IMAGE_NORMAL"
+              glib:nick="normal"/>
+      <member name="shared"
+              value="1"
+              c:identifier="GDK_IMAGE_SHARED"
+              glib:nick="shared"/>
+      <member name="fastest"
+              value="2"
+              c:identifier="GDK_IMAGE_FASTEST"
+              glib:nick="fastest"/>
+    </enumeration>
+    <bitfield name="InputCondition"
+              glib:type-name="GdkInputCondition"
+              glib:get-type="gdk_input_condition_get_type"
+              c:type="GdkInputCondition">
+      <member name="read"
+              value="1"
+              c:identifier="GDK_INPUT_READ"
+              glib:nick="read"/>
+      <member name="write"
+              value="2"
+              c:identifier="GDK_INPUT_WRITE"
+              glib:nick="write"/>
+      <member name="exception"
+              value="4"
+              c:identifier="GDK_INPUT_EXCEPTION"
+              glib:nick="exception"/>
+    </bitfield>
+    <callback name="InputFunction" c:type="GdkInputFunction">
+      <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="gpointer"/>
+        </parameter>
+        <parameter name="source" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="condition" transfer-ownership="none">
+          <type name="InputCondition" c:type="GdkInputCondition"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="InputMode"
+                 glib:type-name="GdkInputMode"
+                 glib:get-type="gdk_input_mode_get_type"
+                 c:type="GdkInputMode">
+      <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">
+      <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"/>
+    </enumeration>
+    <constant name="Insert" value="65379">
+      <type name="int"/>
+    </constant>
+    <constant name="Iogonek" value="967">
+      <type name="int"/>
+    </constant>
+    <constant name="Itilde" value="933">
+      <type name="int"/>
+    </constant>
+    <constant name="J" value="74">
+      <type name="int"/>
+    </constant>
+    <constant name="Jcircumflex" value="684">
+      <type name="int"/>
+    </constant>
+    <enumeration name="JoinStyle"
+                 glib:type-name="GdkJoinStyle"
+                 glib:get-type="gdk_join_style_get_type"
+                 c:type="GdkJoinStyle">
+      <member name="miter"
+              value="0"
+              c:identifier="GDK_JOIN_MITER"
+              glib:nick="miter"/>
+      <member name="round"
+              value="1"
+              c:identifier="GDK_JOIN_ROUND"
+              glib:nick="round"/>
+      <member name="bevel"
+              value="2"
+              c:identifier="GDK_JOIN_BEVEL"
+              glib:nick="bevel"/>
+    </enumeration>
+    <constant name="K" value="75">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_0" value="65456">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_1" value="65457">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_2" value="65458">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_3" value="65459">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_4" value="65460">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_5" value="65461">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_6" value="65462">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_7" value="65463">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_8" value="65464">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_9" value="65465">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Add" value="65451">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Begin" value="65437">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Decimal" value="65454">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Delete" value="65439">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Divide" value="65455">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Down" value="65433">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_End" value="65436">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Enter" value="65421">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Equal" value="65469">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_F1" value="65425">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_F2" value="65426">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_F3" value="65427">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_F4" value="65428">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Home" value="65429">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Insert" value="65438">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Left" value="65430">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Multiply" value="65450">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Next" value="65435">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Page_Down" value="65435">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Page_Up" value="65434">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Prior" value="65434">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Right" value="65432">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Separator" value="65452">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Space" value="65408">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Subtract" value="65453">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Tab" value="65417">
+      <type name="int"/>
+    </constant>
+    <constant name="KP_Up" value="65431">
+      <type name="int"/>
+    </constant>
+    <constant name="Kana_Lock" value="65325">
+      <type name="int"/>
+    </constant>
+    <constant name="Kana_Shift" value="65326">
+      <type name="int"/>
+    </constant>
+    <constant name="Kanji" value="65313">
+      <type name="int"/>
+    </constant>
+    <constant name="Kanji_Bangou" value="65335">
+      <type name="int"/>
+    </constant>
+    <constant name="Katakana" value="65318">
+      <type name="int"/>
+    </constant>
+    <constant name="KbdBrightnessDown" value="269025030">
+      <type name="int"/>
+    </constant>
+    <constant name="KbdBrightnessUp" value="269025029">
+      <type name="int"/>
+    </constant>
+    <constant name="KbdLightOnOff" value="269025028">
+      <type name="int"/>
+    </constant>
+    <constant name="Kcedilla" value="979">
+      <type name="int"/>
+    </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="ulong" c:type="gulong"/>
+      </field>
+      <field name="owner_events" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+    </record>
+    <class name="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">
+        <return-value transfer-ownership="full">
+          <type name="Keymap" c:type="GdkKeymap*"/>
+        </return-value>
+      </function>
+      <function name="get_for_display"
+                c:identifier="gdk_keymap_get_for_display">
+        <return-value transfer-ownership="full">
+          <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="lookup_key"
+              c:identifier="gdk_keymap_lookup_key"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="KeymapKey" c:type="GdkKeymapKey*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="translate_keyboard_state"
+              c:identifier="gdk_keymap_translate_keyboard_state"
+              doc="determine the group or level, or %NULL
+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&apos;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&apos;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;">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="hardware_keycode" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="state" transfer-ownership="none">
+            <type name="ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+          <parameter name="group" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="keyval"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for keyval, or %NULL">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+          <parameter name="effective_group"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for effective group, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="level"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for level, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="consumed_modifiers"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for modifiers that were used to">
+            <type name="ModifierType" c:type="GdkModifierType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_entries_for_keyval"
+              c:identifier="gdk_keymap_get_entries_for_keyval"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="keyval" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="keys"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="return location for an array of #GdkKeymapKey">
+            <type name="KeymapKey" c:type="GdkKeymapKey**"/>
+          </parameter>
+          <parameter name="n_keys"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="return location for number of elements in returned array">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_entries_for_keycode"
+              c:identifier="gdk_keymap_get_entries_for_keycode"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="hardware_keycode" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="keys"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="return location for array of #GdkKeymapKey, or %NULL">
+            <type name="KeymapKey" c:type="GdkKeymapKey**"/>
+          </parameter>
+          <parameter name="keyvals"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="return location for array of keyvals, or %NULL">
+            <type name="uint" c:type="guint**"/>
+          </parameter>
+          <parameter name="n_entries"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_direction" c:identifier="gdk_keymap_get_direction">
+        <return-value transfer-ownership="full">
+          <type name="Pango.Direction" c:type="PangoDirection"/>
+        </return-value>
+      </method>
+      <method name="have_bidi_layouts"
+              c:identifier="gdk_keymap_have_bidi_layouts">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_caps_lock_state"
+              c:identifier="gdk_keymap_get_caps_lock_state"
+              doc="Returns whether the Caps Lock modifer is locked."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="add_virtual_modifiers"
+              c:identifier="gdk_keymap_add_virtual_modifiers"
+              doc="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."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="ModifierType" c:type="GdkModifierType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="map_virtual_modifiers"
+              c:identifier="gdk_keymap_map_virtual_modifiers"
+              doc="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."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <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"
+                   doc="The ::direction-changed signal gets emitted when the direction of
+the keymap changes."
+                   version="2.0">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="keys-changed"
+                   doc="The ::keys-changed signal is emitted when the mapping represented by"
+                   version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="state-changed"
+                   doc="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()."
+                   version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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" c:type="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" c:type="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="uint" c:type="guint"/>
+      </field>
+      <field name="group" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="level" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+    </record>
+    <constant name="Korean_Won" value="3839">
+      <type name="int"/>
+    </constant>
+    <constant name="L" value="76">
+      <type name="int"/>
+    </constant>
+    <constant name="L1" value="65480">
+      <type name="int"/>
+    </constant>
+    <constant name="L10" value="65489">
+      <type name="int"/>
+    </constant>
+    <constant name="L2" value="65481">
+      <type name="int"/>
+    </constant>
+    <constant name="L3" value="65482">
+      <type name="int"/>
+    </constant>
+    <constant name="L4" value="65483">
+      <type name="int"/>
+    </constant>
+    <constant name="L5" value="65484">
+      <type name="int"/>
+    </constant>
+    <constant name="L6" value="65485">
+      <type name="int"/>
+    </constant>
+    <constant name="L7" value="65486">
+      <type name="int"/>
+    </constant>
+    <constant name="L8" value="65487">
+      <type name="int"/>
+    </constant>
+    <constant name="L9" value="65488">
+      <type name="int"/>
+    </constant>
+    <constant name="Lacute" value="453">
+      <type name="int"/>
+    </constant>
+    <constant name="Last_Virtual_Screen" value="65236">
+      <type name="int"/>
+    </constant>
+    <constant name="Launch0" value="269025088">
+      <type name="int"/>
+    </constant>
+    <constant name="Launch1" value="269025089">
+      <type name="int"/>
+    </constant>
+    <constant name="Launch2" value="269025090">
+      <type name="int"/>
+    </constant>
+    <constant name="Launch3" value="269025091">
+      <type name="int"/>
+    </constant>
+    <constant name="Launch4" value="269025092">
+      <type name="int"/>
+    </constant>
+    <constant name="Launch5" value="269025093">
+      <type name="int"/>
+    </constant>
+    <constant name="Launch6" value="269025094">
+      <type name="int"/>
+    </constant>
+    <constant name="Launch7" value="269025095">
+      <type name="int"/>
+    </constant>
+    <constant name="Launch8" value="269025096">
+      <type name="int"/>
+    </constant>
+    <constant name="Launch9" value="269025097">
+      <type name="int"/>
+    </constant>
+    <constant name="LaunchA" value="269025098">
+      <type name="int"/>
+    </constant>
+    <constant name="LaunchB" value="269025099">
+      <type name="int"/>
+    </constant>
+    <constant name="LaunchC" value="269025100">
+      <type name="int"/>
+    </constant>
+    <constant name="LaunchD" value="269025101">
+      <type name="int"/>
+    </constant>
+    <constant name="LaunchE" value="269025102">
+      <type name="int"/>
+    </constant>
+    <constant name="LaunchF" value="269025103">
+      <type name="int"/>
+    </constant>
+    <constant name="Lbelowdot" value="16784950">
+      <type name="int"/>
+    </constant>
+    <constant name="Lcaron" value="421">
+      <type name="int"/>
+    </constant>
+    <constant name="Lcedilla" value="934">
+      <type name="int"/>
+    </constant>
+    <constant name="Left" value="65361">
+      <type name="int"/>
+    </constant>
+    <constant name="LightBulb" value="269025077">
+      <type name="int"/>
+    </constant>
+    <enumeration name="LineStyle"
+                 glib:type-name="GdkLineStyle"
+                 glib:get-type="gdk_line_style_get_type"
+                 c:type="GdkLineStyle">
+      <member name="solid"
+              value="0"
+              c:identifier="GDK_LINE_SOLID"
+              glib:nick="solid"/>
+      <member name="on_off_dash"
+              value="1"
+              c:identifier="GDK_LINE_ON_OFF_DASH"
+              glib:nick="on-off-dash"/>
+      <member name="double_dash"
+              value="2"
+              c:identifier="GDK_LINE_DOUBLE_DASH"
+              glib:nick="double-dash"/>
+    </enumeration>
+    <constant name="Linefeed" value="65290">
+      <type name="int"/>
+    </constant>
+    <constant name="LiraSign" value="16785572">
+      <type name="int"/>
+    </constant>
+    <constant name="LogOff" value="269025121">
+      <type name="int"/>
+    </constant>
+    <constant name="Lstroke" value="419">
+      <type name="int"/>
+    </constant>
+    <constant name="M" value="77">
+      <type name="int"/>
+    </constant>
+    <constant name="MAX_TIMECOORD_AXES" value="128">
+      <type name="int"/>
+    </constant>
+    <constant name="Mabovedot" value="16784960">
+      <type name="int"/>
+    </constant>
+    <constant name="Macedonia_DSE" value="1717">
+      <type name="int"/>
+    </constant>
+    <constant name="Macedonia_GJE" value="1714">
+      <type name="int"/>
+    </constant>
+    <constant name="Macedonia_KJE" value="1724">
+      <type name="int"/>
+    </constant>
+    <constant name="Macedonia_dse" value="1701">
+      <type name="int"/>
+    </constant>
+    <constant name="Macedonia_gje" value="1698">
+      <type name="int"/>
+    </constant>
+    <constant name="Macedonia_kje" value="1708">
+      <type name="int"/>
+    </constant>
+    <constant name="Mae_Koho" value="65342">
+      <type name="int"/>
+    </constant>
+    <constant name="Mail" value="269025049">
+      <type name="int"/>
+    </constant>
+    <constant name="MailForward" value="269025168">
+      <type name="int"/>
+    </constant>
+    <constant name="Market" value="269025122">
+      <type name="int"/>
+    </constant>
+    <constant name="Massyo" value="65324">
+      <type name="int"/>
+    </constant>
+    <constant name="Meeting" value="269025123">
+      <type name="int"/>
+    </constant>
+    <constant name="Memo" value="269025054">
+      <type name="int"/>
+    </constant>
+    <constant name="Menu" value="65383">
+      <type name="int"/>
+    </constant>
+    <constant name="MenuKB" value="269025125">
+      <type name="int"/>
+    </constant>
+    <constant name="MenuPB" value="269025126">
+      <type name="int"/>
+    </constant>
+    <constant name="Messenger" value="269025166">
+      <type name="int"/>
+    </constant>
+    <constant name="Meta_L" value="65511">
+      <type name="int"/>
+    </constant>
+    <constant name="Meta_R" value="65512">
+      <type name="int"/>
+    </constant>
+    <constant name="MillSign" value="16785573">
+      <type name="int"/>
+    </constant>
+    <constant name="ModeLock" value="269025025">
+      <type name="int"/>
+    </constant>
+    <constant name="Mode_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <bitfield name="ModifierType"
+              glib:type-name="GdkModifierType"
+              glib:get-type="gdk_modifier_type_get_type"
+              c:type="GdkModifierType">
+      <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>
+    <constant name="MonBrightnessDown" value="269025027">
+      <type name="int"/>
+    </constant>
+    <constant name="MonBrightnessUp" value="269025026">
+      <type name="int"/>
+    </constant>
+    <constant name="MouseKeys_Accel_Enable" value="65143">
+      <type name="int"/>
+    </constant>
+    <constant name="MouseKeys_Enable" value="65142">
+      <type name="int"/>
+    </constant>
+    <constant name="Muhenkan" value="65314">
+      <type name="int"/>
+    </constant>
+    <constant name="Multi_key" value="65312">
+      <type name="int"/>
+    </constant>
+    <constant name="MultipleCandidate" value="65341">
+      <type name="int"/>
+    </constant>
+    <constant name="Music" value="269025170">
+      <type name="int"/>
+    </constant>
+    <constant name="MyComputer" value="269025075">
+      <type name="int"/>
+    </constant>
+    <constant name="MySites" value="269025127">
+      <type name="int"/>
+    </constant>
+    <constant name="N" value="78">
+      <type name="int"/>
+    </constant>
+    <constant name="Nacute" value="465">
+      <type name="int"/>
+    </constant>
+    <constant name="NairaSign" value="16785574">
+      <type name="int"/>
+    </constant>
+    <constant name="Ncaron" value="466">
+      <type name="int"/>
+    </constant>
+    <constant name="Ncedilla" value="977">
+      <type name="int"/>
+    </constant>
+    <constant name="New" value="269025128">
+      <type name="int"/>
+    </constant>
+    <constant name="NewSheqelSign" value="16785578">
+      <type name="int"/>
+    </constant>
+    <constant name="News" value="269025129">
+      <type name="int"/>
+    </constant>
+    <constant name="Next" value="65366">
+      <type name="int"/>
+    </constant>
+    <constant name="Next_VMode" value="269024802">
+      <type name="int"/>
+    </constant>
+    <constant name="Next_Virtual_Screen" value="65234">
+      <type name="int"/>
+    </constant>
+    <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>
+    <constant name="Ntilde" value="209">
+      <type name="int"/>
+    </constant>
+    <constant name="Num_Lock" value="65407">
+      <type name="int"/>
+    </constant>
+    <constant name="O" value="79">
+      <type name="int"/>
+    </constant>
+    <constant name="OE" value="5052">
+      <type name="int"/>
+    </constant>
+    <constant name="Oacute" value="211">
+      <type name="int"/>
+    </constant>
+    <constant name="Obarred" value="16777631">
+      <type name="int"/>
+    </constant>
+    <constant name="Obelowdot" value="16785100">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocaron" value="16777681">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocircumflex" value="212">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocircumflexacute" value="16785104">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocircumflexbelowdot" value="16785112">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocircumflexgrave" value="16785106">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocircumflexhook" value="16785108">
+      <type name="int"/>
+    </constant>
+    <constant name="Ocircumflextilde" value="16785110">
+      <type name="int"/>
+    </constant>
+    <constant name="Odiaeresis" value="214">
+      <type name="int"/>
+    </constant>
+    <constant name="Odoubleacute" value="469">
+      <type name="int"/>
+    </constant>
+    <constant name="OfficeHome" value="269025130">
+      <type name="int"/>
+    </constant>
+    <constant name="Ograve" value="210">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohook" value="16785102">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohorn" value="16777632">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohornacute" value="16785114">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohornbelowdot" value="16785122">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohorngrave" value="16785116">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohornhook" value="16785118">
+      <type name="int"/>
+    </constant>
+    <constant name="Ohorntilde" value="16785120">
+      <type name="int"/>
+    </constant>
+    <constant name="Omacron" value="978">
+      <type name="int"/>
+    </constant>
+    <constant name="Ooblique" value="216">
+      <type name="int"/>
+    </constant>
+    <constant name="Open" value="269025131">
+      <type name="int"/>
+    </constant>
+    <constant name="OpenURL" value="269025080">
+      <type name="int"/>
+    </constant>
+    <constant name="Option" value="269025132">
+      <type name="int"/>
+    </constant>
+    <constant name="Oslash" value="216">
+      <type name="int"/>
+    </constant>
+    <constant name="Otilde" value="213">
+      <type name="int"/>
+    </constant>
+    <enumeration name="OverlapType"
+                 glib:type-name="GdkOverlapType"
+                 glib:get-type="gdk_overlap_type_get_type"
+                 c:type="GdkOverlapType">
+      <member name="in"
+              value="0"
+              c:identifier="GDK_OVERLAP_RECTANGLE_IN"
+              glib:nick="in"/>
+      <member name="out"
+              value="1"
+              c:identifier="GDK_OVERLAP_RECTANGLE_OUT"
+              glib:nick="out"/>
+      <member name="part"
+              value="2"
+              c:identifier="GDK_OVERLAP_RECTANGLE_PART"
+              glib:nick="part"/>
+    </enumeration>
+    <constant name="Overlay1_Enable" value="65144">
+      <type name="int"/>
+    </constant>
+    <constant name="Overlay2_Enable" value="65145">
+      <type name="int"/>
+    </constant>
+    <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="P" value="80">
+      <type name="int"/>
+    </constant>
+    <constant name="PARENT_RELATIVE" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="PRIORITY_REDRAW" value="20">
+      <type name="int"/>
+    </constant>
+    <constant name="Pabovedot" value="16784982">
+      <type name="int"/>
+    </constant>
+    <constant name="Page_Down" value="65366">
+      <type name="int"/>
+    </constant>
+    <constant name="Page_Up" value="65365">
+      <type name="int"/>
+    </constant>
+    <record name="PangoAttrEmbossColor" c:type="GdkPangoAttrEmbossColor">
+      <field name="attr" writable="1">
+        <type name="Pango.Attribute" c:type="PangoAttribute"/>
+      </field>
+      <field name="color" writable="1">
+        <type name="Pango.Color" c:type="PangoColor"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gdk_pango_attr_emboss_color_new"
+                   doc="Creates a new attribute specifying the color to emboss text with."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="PangoAttrEmbossColor" c:type="PangoAttribute*"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+    </record>
+    <record name="PangoAttrEmbossed" c:type="GdkPangoAttrEmbossed">
+      <field name="attr" writable="1">
+        <type name="Pango.Attribute" c:type="PangoAttribute"/>
+      </field>
+      <field name="embossed" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gdk_pango_attr_embossed_new"
+                   doc="Creates a new attribute flagging a region as embossed or not.">
+        <return-value transfer-ownership="full">
+          <type name="PangoAttrEmbossed" c:type="PangoAttribute*"/>
+        </return-value>
+        <parameters>
+          <parameter name="embossed" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+    </record>
+    <record name="PangoAttrStipple" c:type="GdkPangoAttrStipple">
+      <field name="attr" writable="1">
+        <type name="Pango.Attribute" c:type="PangoAttribute"/>
+      </field>
+      <field name="stipple" writable="1">
+        <type name="Bitmap" c:type="GdkBitmap*"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gdk_pango_attr_stipple_new"
+                   doc="Creates a new attribute containing a stipple bitmap to be used when
+rendering the text.">
+        <return-value transfer-ownership="full">
+          <type name="PangoAttrStipple" c:type="PangoAttribute*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stipple" transfer-ownership="none">
+            <type name="Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+    </record>
+    <class name="PangoRenderer"
+           c:type="GdkPangoRenderer"
+           doc="#GdkPangoRenderer is a subclass of #PangoRenderer used for rendering
+Pango objects into GDK drawables. The default renderer for a particular
+screen is obtained with gdk_pango_renderer_get_default(); Pango
+functions like pango_renderer_draw_layout() and
+pango_renderer_draw_layout_line() are then used to draw objects with
+the renderer.
+In most simple cases, applications can just use gdk_draw_layout(), and
+don&apos;t need to directly use #GdkPangoRenderer at all. Using the
+#GdkPangoRenderer directly is most useful when working with a
+transformation such as a rotation, because the Pango drawing functions
+take user space coordinates (coordinates before the transformation)
+instead of device coordinates.
+In certain cases it can be useful to subclass #GdkPangoRenderer. Examples
+of reasons to do this are to add handling of custom attributes by
+overriding &apos;prepare_run&apos; or to do custom drawing of embedded objects
+by overriding &apos;draw_shape&apos;."
+           version="2.6"
+           parent="Pango.Renderer"
+           glib:type-name="GdkPangoRenderer"
+           glib:get-type="gdk_pango_renderer_get_type"
+           glib:type-struct="PangoRendererClass">
+      <constructor name="new"
+                   c:identifier="gdk_pango_renderer_new"
+                   doc="Creates a new #PangoRenderer for @screen. Normally you can use the
+results of gdk_pango_renderer_get_default() rather than creating a new
+renderer."
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="PangoRenderer" c:type="PangoRenderer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <type name="Screen" c:type="GdkScreen*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="get_default"
+                c:identifier="gdk_pango_renderer_get_default"
+                doc="Gets the default #PangoRenderer for a screen. This default renderer
+is shared by all users of the display, so properties such as the color
+or transformation matrix set for the renderer may be overwritten
+by functions such as gdk_draw_layout().
+Before using the renderer, you need to call gdk_pango_renderer_set_drawable()
+and gdk_pango_renderer_set_gc() to set the drawable and graphics context
+to use for drawing.
+renderer is owned by GTK+ and will be kept around until the
+screen is closed."
+                version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="Pango.Renderer" c:type="PangoRenderer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <type name="Screen" c:type="GdkScreen*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="set_drawable"
+              c:identifier="gdk_pango_renderer_set_drawable"
+              doc="Sets the drawable the renderer draws to."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="drawable"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the new target drawable, or %NULL">
+            <type name="Drawable" c:type="GdkDrawable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_gc"
+              c:identifier="gdk_pango_renderer_set_gc"
+              doc="Sets the GC the renderer draws with. Note that the GC must not be
+modified until it is unset by calling the function again with
+%NULL for the @gc parameter, since GDK may make internal copies
+of the GC which won&apos;t be updated to follow changes to the
+original GC."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gc"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the new GC to use for drawing, or %NULL">
+            <type name="GC" c:type="GdkGC*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_stipple"
+              c:identifier="gdk_pango_renderer_set_stipple"
+              doc="Sets the stipple for one render part (foreground, background, underline,
+etc.) Note that this is overwritten when iterating through the individual
+styled runs of a #PangoLayout or #PangoLayoutLine. This function is thus
+only useful when you call low level functions like pango_renderer_draw_glyphs()
+directly, or in the &apos;prepare_run&apos; virtual function of a subclass of
+#GdkPangoRenderer."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="part" transfer-ownership="none">
+            <type name="Pango.RenderPart" c:type="PangoRenderPart"/>
+          </parameter>
+          <parameter name="stipple" transfer-ownership="none">
+            <type name="Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_override_color"
+              c:identifier="gdk_pango_renderer_set_override_color"
+              doc="set override color.
+Sets the color for a particular render part (foreground,
+background, underline, etc.), overriding any attributes on the layouts
+renderered with this renderer."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="part" transfer-ownership="none">
+            <type name="Pango.RenderPart" c:type="PangoRenderPart"/>
+          </parameter>
+          <parameter name="color"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the color to use, or %NULL to unset a previously">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="screen" writable="1" construct-only="1">
+        <type name="Screen" c:type="GdkScreen"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Pango.Renderer" c:type="PangoRenderer"/>
+      </field>
+      <field name="priv">
+        <type name="PangoRendererPrivate" c:type="GdkPangoRendererPrivate*"/>
+      </field>
+    </class>
+    <record name="PangoRendererClass"
+            c:type="GdkPangoRendererClass"
+            glib:is-gtype-struct-for="PangoRenderer"
+            doc="#GdkPangoRenderer is the class structure for #GdkPangoRenderer."
+            version="2.6">
+      <field name="parent_class">
+        <type name="Pango.RendererClass" c:type="PangoRendererClass"/>
+      </field>
+    </record>
+    <record name="PangoRendererPrivate" c:type="GdkPangoRendererPrivate">
+    </record>
+    <constant name="Paste" value="269025133">
+      <type name="int"/>
+    </constant>
+    <constant name="Pause" value="65299">
+      <type name="int"/>
+    </constant>
+    <constant name="PesetaSign" value="16785575">
+      <type name="int"/>
+    </constant>
+    <constant name="Phone" value="269025134">
+      <type name="int"/>
+    </constant>
+    <constant name="Pictures" value="269025169">
+      <type name="int"/>
+    </constant>
+    <class name="Pixmap"
+           c:type="GdkPixmap"
+           parent="Drawable"
+           glib:type-name="GdkPixmap"
+           glib:get-type="gdk_pixmap_get_type">
+      <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="int" c:type="gint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="depth" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="create_from_data"
+                c:identifier="gdk_pixmap_create_from_data">
+        <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="data" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </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>
+          <parameter name="depth" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="fg" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="bg" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="create_from_xpm"
+                c:identifier="gdk_pixmap_create_from_xpm"
+                doc="for the new pixmap.
+the transparency mask of the XPM file. Can be %NULL,
+in which case transparency will be ignored.
+that are transparent in the input file. Can be %NULL,
+in which case a default color will be used.
+Create a pixmap from a XPM file.">
+        <return-value transfer-ownership="none" doc="the #GdkPixmap">
+          <type name="Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="drawable" transfer-ownership="none">
+            <type name="Drawable" c:type="GdkDrawable*"/>
+          </parameter>
+          <parameter name="mask"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="a pointer to a place to store a bitmap representing">
+            <type name="Bitmap" c:type="GdkBitmap**"/>
+          </parameter>
+          <parameter name="transparent_color" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="colormap_create_from_xpm"
+                c:identifier="gdk_pixmap_colormap_create_from_xpm"
+                doc="for the new pixmap. Can be %NULL if @colormap is given.
+If omitted, the colormap for @window will be used.
+the transparency mask of the XPM file. Can be %NULL,
+in which case transparency will be ignored.
+that are transparent in the input file. Can be %NULL,
+in which case a default color will be used.
+Create a pixmap from a XPM file using a particular colormap.">
+        <return-value transfer-ownership="none" doc="the #GdkPixmap.">
+          <type name="Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="drawable" transfer-ownership="none">
+            <type name="Drawable" c:type="GdkDrawable*"/>
+          </parameter>
+          <parameter name="colormap" transfer-ownership="none">
+            <type name="Colormap" c:type="GdkColormap*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="Bitmap" c:type="GdkBitmap**"/>
+          </parameter>
+          <parameter name="transparent_color" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="create_from_xpm_d"
+                c:identifier="gdk_pixmap_create_from_xpm_d"
+                doc="for the new pixmap.
+the transparency mask of the XPM file. Can be %NULL,
+in which case transparency will be ignored.
+that are transparent in the input file. Can be %NULL
+in which case a default color will be used.
+Create a pixmap from data in XPM format.">
+        <return-value transfer-ownership="none" doc="the #GdkPixmap.">
+          <type name="Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="drawable" transfer-ownership="none">
+            <type name="Drawable" c:type="GdkDrawable*"/>
+          </parameter>
+          <parameter name="mask"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="Pointer to a place to store a bitmap representing">
+            <type name="Bitmap" c:type="GdkBitmap**"/>
+          </parameter>
+          <parameter name="transparent_color" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="colormap_create_from_xpm_d"
+                c:identifier="gdk_pixmap_colormap_create_from_xpm_d"
+                doc="for the new pixmap. Can be %NULL if @colormap is given.
+If omitted, the colormap for @window will be used.
+the transparency mask of the XPM file. Can be %NULL,
+in which case transparency will be ignored.
+that are transparent in the input file. Can be %NULL,
+in which case a default color will be used.
+Create a pixmap from data in XPM format using a particular
+colormap.">
+        <return-value transfer-ownership="none" doc="the #GdkPixmap.">
+          <type name="Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="drawable" transfer-ownership="none">
+            <type name="Drawable" c:type="GdkDrawable*"/>
+          </parameter>
+          <parameter name="colormap" transfer-ownership="none">
+            <type name="Colormap" c:type="GdkColormap*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="Bitmap" c:type="GdkBitmap**"/>
+          </parameter>
+          <parameter name="transparent_color" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="foreign_new"
+                c:identifier="gdk_pixmap_foreign_new"
+                doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="anid" transfer-ownership="none">
+            <type name="NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="lookup"
+                c:identifier="gdk_pixmap_lookup"
+                doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="anid" transfer-ownership="none">
+            <type name="NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="foreign_new_for_display"
+                c:identifier="gdk_pixmap_foreign_new_for_display"
+                doc="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."
+                version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <type name="Display" c:type="GdkDisplay*"/>
+          </parameter>
+          <parameter name="anid" transfer-ownership="none">
+            <type name="NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="lookup_for_display"
+                c:identifier="gdk_pixmap_lookup_for_display"
+                doc="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."
+                version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <type name="Display" c:type="GdkDisplay*"/>
+          </parameter>
+          <parameter name="anid" transfer-ownership="none">
+            <type name="NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="foreign_new_for_screen"
+                c:identifier="gdk_pixmap_foreign_new_for_screen"
+                doc="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."
+                version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <type name="Screen" c:type="GdkScreen*"/>
+          </parameter>
+          <parameter name="anid" transfer-ownership="none">
+            <type name="NativeWindow" c:type="GdkNativeWindow"/>
+          </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>
+          <parameter name="depth" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </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="int" 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="int" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+    </record>
+    <record name="PointerHooks" c:type="GdkPointerHooks">
+      <field name="get_pointer">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="window_at_pointer">
+        <type name="any" c:type="pointer"/>
+      </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="double" c:type="gdouble"/>
+      </field>
+      <field name="toplevel_y" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="state" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="button" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="motion_hint_serial" writable="1">
+        <type name="ulong" c:type="gulong"/>
+      </field>
+    </record>
+    <constant name="Pointer_Accelerate" value="65274">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Button1" value="65257">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Button2" value="65258">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Button3" value="65259">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Button4" value="65260">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Button5" value="65261">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Button_Dflt" value="65256">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DblClick1" value="65263">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DblClick2" value="65264">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DblClick3" value="65265">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DblClick4" value="65266">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DblClick5" value="65267">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DblClick_Dflt" value="65262">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DfltBtnNext" value="65275">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DfltBtnPrev" value="65276">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Down" value="65251">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DownLeft" value="65254">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_DownRight" value="65255">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Drag1" value="65269">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Drag2" value="65270">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Drag3" value="65271">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Drag4" value="65272">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Drag5" value="65277">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Drag_Dflt" value="65268">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_EnableKeys" value="65273">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Left" value="65248">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Right" value="65249">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_Up" value="65250">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_UpLeft" value="65252">
+      <type name="int"/>
+    </constant>
+    <constant name="Pointer_UpRight" value="65253">
+      <type name="int"/>
+    </constant>
+    <constant name="PowerDown" value="269025057">
+      <type name="int"/>
+    </constant>
+    <constant name="PowerOff" value="269025066">
+      <type name="int"/>
+    </constant>
+    <constant name="Prev_VMode" value="269024803">
+      <type name="int"/>
+    </constant>
+    <constant name="Prev_Virtual_Screen" value="65233">
+      <type name="int"/>
+    </constant>
+    <constant name="PreviousCandidate" value="65342">
+      <type name="int"/>
+    </constant>
+    <constant name="Print" value="65377">
+      <type name="int"/>
+    </constant>
+    <constant name="Prior" value="65365">
+      <type name="int"/>
+    </constant>
+    <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>
+    <constant name="Q" value="81">
+      <type name="int"/>
+    </constant>
+    <constant name="R" value="82">
+      <type name="int"/>
+    </constant>
+    <constant name="R1" value="65490">
+      <type name="int"/>
+    </constant>
+    <constant name="R10" value="65499">
+      <type name="int"/>
+    </constant>
+    <constant name="R11" value="65500">
+      <type name="int"/>
+    </constant>
+    <constant name="R12" value="65501">
+      <type name="int"/>
+    </constant>
+    <constant name="R13" value="65502">
+      <type name="int"/>
+    </constant>
+    <constant name="R14" value="65503">
+      <type name="int"/>
+    </constant>
+    <constant name="R15" value="65504">
+      <type name="int"/>
+    </constant>
+    <constant name="R2" value="65491">
+      <type name="int"/>
+    </constant>
+    <constant name="R3" value="65492">
+      <type name="int"/>
+    </constant>
+    <constant name="R4" value="65493">
+      <type name="int"/>
+    </constant>
+    <constant name="R5" value="65494">
+      <type name="int"/>
+    </constant>
+    <constant name="R6" value="65495">
+      <type name="int"/>
+    </constant>
+    <constant name="R7" value="65496">
+      <type name="int"/>
+    </constant>
+    <constant name="R8" value="65497">
+      <type name="int"/>
+    </constant>
+    <constant name="R9" value="65498">
+      <type name="int"/>
+    </constant>
+    <constant name="Racute" value="448">
+      <type name="int"/>
+    </constant>
+    <constant name="Rcaron" value="472">
+      <type name="int"/>
+    </constant>
+    <constant name="Rcedilla" value="931">
+      <type name="int"/>
+    </constant>
+    <record name="Rectangle"
+            c:type="GdkRectangle"
+            glib:type-name="GdkRectangle"
+            glib:get-type="gdk_rectangle_get_type">
+      <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="width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <method name="intersect"
+              c:identifier="gdk_rectangle_intersect"
+              doc="Calculates the intersection of two rectangles. It is allowed for
+do not intersect, @dest&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src2" transfer-ownership="none">
+            <type name="Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="dest"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="return location for the intersection of @src1 and @src2, or %NULL">
+            <type name="Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="union"
+              c:identifier="gdk_rectangle_union"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src2" transfer-ownership="none">
+            <type name="Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="Red" value="269025187">
+      <type name="int"/>
+    </constant>
+    <constant name="Redo" value="65382">
+      <type name="int"/>
+    </constant>
+    <constant name="Refresh" value="269025065">
+      <type name="int"/>
+    </constant>
+    <record name="Region" c:type="GdkRegion">
+      <constructor name="new"
+                   c:identifier="gdk_region_new"
+                   doc="Creates a new empty #GdkRegion.">
+        <return-value transfer-ownership="full">
+          <type name="Region" c:type="GdkRegion*"/>
+        </return-value>
+      </constructor>
+      <method name="copy"
+              c:identifier="gdk_region_copy"
+              doc="Copies @region, creating an identical new region.">
+        <return-value transfer-ownership="full">
+          <type name="Region" c:type="GdkRegion*"/>
+        </return-value>
+      </method>
+      <method name="destroy"
+              c:identifier="gdk_region_destroy"
+              doc="Destroys a #GdkRegion.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_clipbox"
+              c:identifier="gdk_region_get_clipbox"
+              doc="Obtains the smallest rectangle which includes the entire #GdkRegion.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rectangle" transfer-ownership="none">
+            <type name="Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_rectangles"
+              c:identifier="gdk_region_get_rectangles"
+              doc="Obtains the area covered by the region as a list of rectangles.
+The array returned in @rectangles must be freed with g_free().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rectangles"
+                     transfer-ownership="container"
+                     doc="return location for an array of rectangles">
+            <array length="2" c:type="GdkRectangle**">
+              <type name="Rectangle"/>
+            </array>
+          </parameter>
+          <parameter name="n_rectangles"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="empty"
+              c:identifier="gdk_region_empty"
+              doc="Finds out if the #GdkRegion is empty.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="equal"
+              c:identifier="gdk_region_equal"
+              doc="Finds out if the two regions are the same.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="region2" transfer-ownership="none">
+            <type name="Region" c:type="GdkRegion*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rect_equal"
+              c:identifier="gdk_region_rect_equal"
+              doc="Finds out if a regions is the same as a rectangle."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="rectangle" transfer-ownership="none">
+            <type name="Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="point_in"
+              c:identifier="gdk_region_point_in"
+              doc="Finds out if a point is in a region.">
+        <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="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rect_in"
+              c:identifier="gdk_region_rect_in"
+              doc="Tests whether a rectangle is within a region.
+%GDK_OVERLAP_RECTANGLE_PART, depending on whether the rectangle is inside,
+outside, or partly inside the #GdkRegion, respectively.">
+        <return-value transfer-ownership="full">
+          <type name="OverlapType" c:type="GdkOverlapType"/>
+        </return-value>
+        <parameters>
+          <parameter name="rectangle" transfer-ownership="none">
+            <type name="Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="offset"
+              c:identifier="gdk_region_offset"
+              doc="Moves a region the specified distance.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="dy" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="shrink"
+              c:identifier="gdk_region_shrink"
+              doc="Resizes a region by the specified amount.
+Positive values shrink the region. Negative values expand it.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="dy" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="union_with_rect"
+              c:identifier="gdk_region_union_with_rect"
+              doc="Sets the area of @region to the union of the areas of @region and
+either @region or @rect.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="intersect"
+              c:identifier="gdk_region_intersect"
+              doc="Sets the area of @source1 to the intersection of the areas of @source1
+and @source2. The resulting area is the set of pixels contained in
+both @source1 and @source2.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source2" transfer-ownership="none">
+            <type name="Region" c:type="GdkRegion*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="union"
+              c:identifier="gdk_region_union"
+              doc="Sets the area of @source1 to the union of the areas of @source1 and
+either @source1 or @source2.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source2" transfer-ownership="none">
+            <type name="Region" c:type="GdkRegion*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="subtract"
+              c:identifier="gdk_region_subtract"
+              doc="Subtracts the area of @source2 from the area @source1. The resulting
+area is the set of pixels contained in @source1 but not in @source2.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source2" transfer-ownership="none">
+            <type name="Region" c:type="GdkRegion*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="xor"
+              c:identifier="gdk_region_xor"
+              doc="Sets the area of @source1 to the exclusive-OR of the areas of @source1
+and @source2. The resulting area is the set of pixels contained in one
+or the other of the two sources but not in both.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source2" transfer-ownership="none">
+            <type name="Region" c:type="GdkRegion*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="spans_intersect_foreach"
+              c:identifier="gdk_region_spans_intersect_foreach"
+              doc="Calls a function on each span in the intersection of @region and @spans.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spans" transfer-ownership="none">
+            <type name="Span" c:type="GdkSpan*"/>
+          </parameter>
+          <parameter name="n_spans" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="sorted" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="function"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="5">
+            <type name="SpanFunc" c:type="GdkSpanFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <constant name="Reload" value="269025139">
+      <type name="int"/>
+    </constant>
+    <constant name="RepeatKeys_Enable" value="65138">
+      <type name="int"/>
+    </constant>
+    <constant name="Reply" value="269025138">
+      <type name="int"/>
+    </constant>
+    <constant name="Return" value="65293">
+      <type name="int"/>
+    </constant>
+    <record name="RgbCmap" c:type="GdkRgbCmap">
+      <field name="colors" writable="1">
+        <array zero-terminated="0" c:type="guint32" fixed-size="256">
+          <type name="uint32"/>
+        </array>
+      </field>
+      <field name="n_colors" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="info_list" writable="1">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <constructor name="new" c:identifier="gdk_rgb_cmap_new">
+        <return-value transfer-ownership="full">
+          <type name="RgbCmap" c:type="GdkRgbCmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="colors" direction="out" transfer-ownership="full">
+            <type name="uint32" c:type="guint32*"/>
+          </parameter>
+          <parameter name="n_colors" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="free" c:identifier="gdk_rgb_cmap_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="RgbDither"
+                 glib:type-name="GdkRgbDither"
+                 glib:get-type="gdk_rgb_dither_get_type"
+                 c:type="GdkRgbDither">
+      <member name="none"
+              value="0"
+              c:identifier="GDK_RGB_DITHER_NONE"
+              glib:nick="none"/>
+      <member name="normal"
+              value="1"
+              c:identifier="GDK_RGB_DITHER_NORMAL"
+              glib:nick="normal"/>
+      <member name="max"
+              value="2"
+              c:identifier="GDK_RGB_DITHER_MAX"
+              glib:nick="max"/>
+    </enumeration>
+    <constant name="Right" value="65363">
+      <type name="int"/>
+    </constant>
+    <constant name="RockerDown" value="269025060">
+      <type name="int"/>
+    </constant>
+    <constant name="RockerEnter" value="269025061">
+      <type name="int"/>
+    </constant>
+    <constant name="RockerUp" value="269025059">
+      <type name="int"/>
+    </constant>
+    <constant name="Romaji" value="65316">
+      <type name="int"/>
+    </constant>
+    <constant name="RotateWindows" value="269025140">
+      <type name="int"/>
+    </constant>
+    <constant name="RotationKB" value="269025142">
+      <type name="int"/>
+    </constant>
+    <constant name="RotationPB" value="269025141">
+      <type name="int"/>
+    </constant>
+    <constant name="RupeeSign" value="16785576">
+      <type name="int"/>
+    </constant>
+    <constant name="S" value="83">
+      <type name="int"/>
+    </constant>
+    <constant name="SCHWA" value="16777615">
+      <type name="int"/>
+    </constant>
+    <constant name="Sabovedot" value="16784992">
+      <type name="int"/>
+    </constant>
+    <constant name="Sacute" value="422">
+      <type name="int"/>
+    </constant>
+    <constant name="Save" value="269025143">
+      <type name="int"/>
+    </constant>
+    <constant name="Scaron" value="425">
+      <type name="int"/>
+    </constant>
+    <constant name="Scedilla" value="426">
+      <type name="int"/>
+    </constant>
+    <constant name="Scircumflex" value="734">
+      <type name="int"/>
+    </constant>
+    <class name="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"
+                doc="Gets the default screen for the default display. (See
+gdk_display_get_default ())."
+                version="2.2">
+        <return-value transfer-ownership="none"
+                      doc="a #GdkScreen, or %NULL if there is no default display.">
+          <type name="Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </function>
+      <function name="width"
+                c:identifier="gdk_screen_width"
+                doc="Returns the width of the default screen in pixels.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </function>
+      <function name="height"
+                c:identifier="gdk_screen_height"
+                doc="Returns the height of the default screen in pixels.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </function>
+      <function name="width_mm"
+                c:identifier="gdk_screen_width_mm"
+                doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </function>
+      <function name="height_mm"
+                c:identifier="gdk_screen_height_mm"
+                doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </function>
+      <method name="get_default_colormap"
+              c:identifier="gdk_screen_get_default_colormap"
+              doc="Gets the default colormap for @screen."
+              version="2.2">
+        <return-value transfer-ownership="none"
+                      doc="the default #GdkColormap.">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </method>
+      <method name="set_default_colormap"
+              c:identifier="gdk_screen_set_default_colormap"
+              doc="Sets the default @colormap for @screen."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="colormap" transfer-ownership="none">
+            <type name="Colormap" c:type="GdkColormap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_system_colormap"
+              c:identifier="gdk_screen_get_system_colormap"
+              doc="Gets the system&apos;s default colormap for @screen"
+              version="2.2">
+        <return-value transfer-ownership="none"
+                      doc="the default colormap for @screen.">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </method>
+      <method name="get_system_visual"
+              c:identifier="gdk_screen_get_system_visual"
+              doc="Get the system&apos;s default visual for @screen.
+This is the visual for the root window of the display.
+The return value should not be freed."
+              version="2.2">
+        <return-value transfer-ownership="none" doc="the system visual">
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </method>
+      <method name="get_rgb_colormap"
+              c:identifier="gdk_screen_get_rgb_colormap"
+              doc="Gets the preferred colormap for rendering image data on @screen.
+Not a very useful function; historically, GDK could only render RGB
+image data to one colormap and visual, but in the current version
+it can render to any colormap and visual. So there&apos;s no need to
+call this function."
+              version="2.2">
+        <return-value transfer-ownership="none" doc="the preferred colormap">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </method>
+      <method name="get_rgb_visual"
+              c:identifier="gdk_screen_get_rgb_visual"
+              doc="Gets a &quot;preferred visual&quot; chosen by GdkRGB for rendering image data
+on @screen. In previous versions of
+GDK, this was the only visual GdkRGB could use for rendering. In
+current versions, it&apos;s simply the visual GdkRGB would have chosen as
+the optimal one in those previous versions. GdkRGB can now render to
+drawables with any visual."
+              version="2.2">
+        <return-value transfer-ownership="none"
+                      doc="The #GdkVisual chosen by GdkRGB.">
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </method>
+      <method name="get_rgba_colormap"
+              c:identifier="gdk_screen_get_rgba_colormap"
+              doc="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&apos;s alpha channel won&apos;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."
+              version="2.8">
+        <return-value transfer-ownership="none"
+                      doc="a colormap to use for windows with">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </method>
+      <method name="get_rgba_visual"
+              c:identifier="gdk_screen_get_rgba_visual"
+              doc="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."
+              version="2.8">
+        <return-value transfer-ownership="none"
+                      doc="a visual to use for windows with an">
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </method>
+      <method name="is_composited"
+              c:identifier="gdk_screen_is_composited"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_root_window"
+              c:identifier="gdk_screen_get_root_window"
+              doc="Gets the root window of @screen."
+              version="2.2">
+        <return-value transfer-ownership="none" doc="the root window">
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_display"
+              c:identifier="gdk_screen_get_display"
+              doc="Gets the display to which the @screen belongs."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </method>
+      <method name="get_number"
+              c:identifier="gdk_screen_get_number"
+              doc="Gets the index of @screen among the screens in the display
+to which it belongs. (See gdk_screen_get_display())"
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_width"
+              c:identifier="gdk_screen_get_width"
+              doc="Gets the width of @screen in pixels"
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_height"
+              c:identifier="gdk_screen_get_height"
+              doc="Gets the height of @screen in pixels"
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_width_mm"
+              c:identifier="gdk_screen_get_width_mm"
+              doc="Gets the width of @screen in millimeters.
+Note that on some X servers this value will not be correct."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_height_mm"
+              c:identifier="gdk_screen_get_height_mm"
+              doc="Returns the height of @screen in millimeters.
+Note that on some X servers this value will not be correct."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="list_visuals"
+              c:identifier="gdk_screen_list_visuals"
+              doc="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&apos;re finished with it.
+contents"
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_toplevel_windows"
+              c:identifier="gdk_screen_get_toplevel_windows"
+              doc="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."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="make_display_name"
+              c:identifier="gdk_screen_make_display_name"
+              doc="Determines the name to pass to gdk_display_open() to get
+a #GdkDisplay with this screen as the default screen."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_n_monitors"
+              c:identifier="gdk_screen_get_n_monitors"
+              doc="Returns the number of monitors which @screen consists of."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_primary_monitor"
+              c:identifier="gdk_screen_get_primary_monitor"
+              doc="Gets the primary monitor for @screen.  The primary monitor
+is considered the monitor where the &apos;main desktop&apos; 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."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_monitor_geometry"
+              c:identifier="gdk_screen_get_monitor_geometry"
+              doc="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()."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="monitor_num" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_monitor_at_point"
+              c:identifier="gdk_screen_get_monitor_at_point"
+              doc="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."
+              version="2.2">
+        <return-value transfer-ownership="none" doc="lies, or">
+          <type name="int" c:type="gint"/>
+        </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>
+        </parameters>
+      </method>
+      <method name="get_monitor_at_window"
+              c:identifier="gdk_screen_get_monitor_at_window"
+              doc="or if @window does not intersect any monitors, a monitor,
+close to @window.
+Returns the number of the monitor in which the largest area of the
+bounding rectangle of @window resides."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Window" c:type="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_monitor_width_mm"
+              c:identifier="gdk_screen_get_monitor_width_mm"
+              doc="Gets the width in millimeters of the specified monitor, if available."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="monitor_num" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_monitor_height_mm"
+              c:identifier="gdk_screen_get_monitor_height_mm"
+              doc="Gets the height in millimeters of the specified monitor."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="monitor_num" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_monitor_plug_name"
+              c:identifier="gdk_screen_get_monitor_plug_name"
+              doc="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"
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="monitor_num" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="broadcast_client_message"
+              c:identifier="gdk_screen_broadcast_client_message"
+              doc="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."
+              version="2.2">
+        <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>
+        </parameters>
+      </method>
+      <method name="get_setting"
+              c:identifier="gdk_screen_get_setting"
+              doc="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."
+              version="2.2">
+        <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="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_font_options"
+              c:identifier="gdk_screen_set_font_options"
+              doc="previously set default font options.
+Sets the default font options for the screen. These
+options will be set on any #PangoContext&apos;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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="options"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #cairo_font_options_t, or %NULL to unset any">
+            <type name="cairo.FontOptions" c:type="cairo_font_options_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font_options"
+              c:identifier="gdk_screen_get_font_options"
+              doc="Gets any options previously set with gdk_screen_set_font_options().
+font options have been set."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="cairo.FontOptions" c:type="cairo_font_options_t*"/>
+        </return-value>
+      </method>
+      <method name="set_resolution"
+              c:identifier="gdk_screen_set_resolution"
+              doc="involved; the terminology is conventional.)
+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)."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dpi" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_resolution"
+              c:identifier="gdk_screen_get_resolution"
+              doc="Gets the resolution for font handling on the screen; see
+gdk_screen_set_resolution() for full details.
+has been set."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_active_window"
+              c:identifier="gdk_screen_get_active_window">
+        <return-value transfer-ownership="full">
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_window_stack"
+              c:identifier="gdk_screen_get_window_stack">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <property name="font-options" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </property>
+      <property name="resolution" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="closed" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="normal_gcs">
+        <array zero-terminated="0" c:type="GdkGC*" fixed-size="32">
+          <type name="GC"/>
+        </array>
+      </field>
+      <field name="exposure_gcs">
+        <array zero-terminated="0" c:type="GdkGC*" fixed-size="32">
+          <type name="GC"/>
+        </array>
+      </field>
+      <field name="subwindow_gcs">
+        <array zero-terminated="0" c:type="GdkGC*" fixed-size="32">
+          <type name="GC"/>
+        </array>
+      </field>
+      <field name="font_options">
+        <type name="cairo.FontOptions" c:type="cairo_font_options_t*"/>
+      </field>
+      <field name="resolution">
+        <type name="double" c:type="double"/>
+      </field>
+      <glib:signal name="composited-changed"
+                   doc="The ::composited-changed signal is emitted when the composited
+status of the screen changes"
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="monitors-changed"
+                   doc="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."
+                   version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="size-changed"
+                   doc="The ::size-changed signal is emitted when the pixel width or
+height of a screen changes."
+                   version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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" c:type="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" c:type="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>
+    <constant name="ScreenSaver" value="269025069">
+      <type name="int"/>
+    </constant>
+    <constant name="ScrollClick" value="269025146">
+      <type name="int"/>
+    </constant>
+    <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>
+    <constant name="ScrollDown" value="269025145">
+      <type name="int"/>
+    </constant>
+    <constant name="ScrollUp" value="269025144">
+      <type name="int"/>
+    </constant>
+    <constant name="Scroll_Lock" value="65300">
+      <type name="int"/>
+    </constant>
+    <constant name="Search" value="269025051">
+      <type name="int"/>
+    </constant>
+    <record name="Segment" c:type="GdkSegment">
+      <field name="x1" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="y1" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="x2" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="y2" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+    </record>
+    <constant name="Select" value="65376">
+      <type name="int"/>
+    </constant>
+    <constant name="SelectButton" value="269025184">
+      <type name="int"/>
+    </constant>
+    <constant name="Send" value="269025147">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_DJE" value="1713">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_DZE" value="1727">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_JE" value="1720">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_LJE" value="1721">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_NJE" value="1722">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_TSHE" value="1723">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_dje" value="1697">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_dze" value="1711">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_je" value="1704">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_lje" value="1705">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_nje" value="1706">
+      <type name="int"/>
+    </constant>
+    <constant name="Serbian_tshe" value="1707">
+      <type name="int"/>
+    </constant>
+    <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>
+    <constant name="Shift_L" value="65505">
+      <type name="int"/>
+    </constant>
+    <constant name="Shift_Lock" value="65510">
+      <type name="int"/>
+    </constant>
+    <constant name="Shift_R" value="65506">
+      <type name="int"/>
+    </constant>
+    <constant name="Shop" value="269025078">
+      <type name="int"/>
+    </constant>
+    <constant name="SingleCandidate" value="65340">
+      <type name="int"/>
+    </constant>
+    <constant name="Sleep" value="269025071">
+      <type name="int"/>
+    </constant>
+    <constant name="SlowKeys_Enable" value="65139">
+      <type name="int"/>
+    </constant>
+    <record name="Span" c:type="GdkSpan">
+      <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="width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+    </record>
+    <callback name="SpanFunc" c:type="GdkSpanFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="span" transfer-ownership="none">
+          <type name="Span" c:type="GdkSpan*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="Spell" value="269025148">
+      <type name="int"/>
+    </constant>
+    <constant name="SplitScreen" value="269025149">
+      <type name="int"/>
+    </constant>
+    <constant name="Standby" value="269025040">
+      <type name="int"/>
+    </constant>
+    <constant name="Start" value="269025050">
+      <type name="int"/>
+    </constant>
+    <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>
+    <constant name="StickyKeys_Enable" value="65141">
+      <type name="int"/>
+    </constant>
+    <constant name="Stop" value="269025064">
+      <type name="int"/>
+    </constant>
+    <constant name="Subtitle" value="269025178">
+      <type name="int"/>
+    </constant>
+    <enumeration name="SubwindowMode"
+                 glib:type-name="GdkSubwindowMode"
+                 glib:get-type="gdk_subwindow_mode_get_type"
+                 c:type="GdkSubwindowMode">
+      <member name="clip_by_children"
+              value="0"
+              c:identifier="GDK_CLIP_BY_CHILDREN"
+              glib:nick="clip-by-children"/>
+      <member name="include_inferiors"
+              value="1"
+              c:identifier="GDK_INCLUDE_INFERIORS"
+              glib:nick="include-inferiors"/>
+    </enumeration>
+    <constant name="Super_L" value="65515">
+      <type name="int"/>
+    </constant>
+    <constant name="Super_R" value="65516">
+      <type name="int"/>
+    </constant>
+    <constant name="Support" value="269025150">
+      <type name="int"/>
+    </constant>
+    <constant name="Suspend" value="269025191">
+      <type name="int"/>
+    </constant>
+    <constant name="Switch_VT_1" value="269024769">
+      <type name="int"/>
+    </constant>
+    <constant name="Switch_VT_10" value="269024778">
+      <type name="int"/>
+    </constant>
+    <constant name="Switch_VT_11" value="269024779">
+      <type name="int"/>
+    </constant>
+    <constant name="Switch_VT_12" value="269024780">
+      <type name="int"/>
+    </constant>
+    <constant name="Switch_VT_2" value="269024770">
+      <type name="int"/>
+    </constant>
+    <constant name="Switch_VT_3" value="269024771">
+      <type name="int"/>
+    </constant>
+    <constant name="Switch_VT_4" value="269024772">
+      <type name="int"/>
+    </constant>
+    <constant name="Switch_VT_5" value="269024773">
+      <type name="int"/>
+    </constant>
+    <constant name="Switch_VT_6" value="269024774">
+      <type name="int"/>
+    </constant>
+    <constant name="Switch_VT_7" value="269024775">
+      <type name="int"/>
+    </constant>
+    <constant name="Switch_VT_8" value="269024776">
+      <type name="int"/>
+    </constant>
+    <constant name="Switch_VT_9" value="269024777">
+      <type name="int"/>
+    </constant>
+    <constant name="Sys_Req" value="65301">
+      <type name="int"/>
+    </constant>
+    <constant name="T" value="84">
+      <type name="int"/>
+    </constant>
+    <constant name="THORN" value="222">
+      <type name="int"/>
+    </constant>
+    <constant name="Tab" value="65289">
+      <type name="int"/>
+    </constant>
+    <constant name="Tabovedot" value="16785002">
+      <type name="int"/>
+    </constant>
+    <constant name="TaskPane" value="269025151">
+      <type name="int"/>
+    </constant>
+    <constant name="Tcaron" value="427">
+      <type name="int"/>
+    </constant>
+    <constant name="Tcedilla" value="478">
+      <type name="int"/>
+    </constant>
+    <constant name="Terminal" value="269025152">
+      <type name="int"/>
+    </constant>
+    <constant name="Terminate_Server" value="65237">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_baht" value="3551">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_bobaimai" value="3514">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_chochan" value="3496">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_chochang" value="3498">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_choching" value="3497">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_chochoe" value="3500">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_dochada" value="3502">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_dodek" value="3508">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_fofa" value="3517">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_fofan" value="3519">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_hohip" value="3531">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_honokhuk" value="3534">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_khokhai" value="3490">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_khokhon" value="3493">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_khokhuat" value="3491">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_khokhwai" value="3492">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_khorakhang" value="3494">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_kokai" value="3489">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lakkhangyao" value="3557">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lekchet" value="3575">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lekha" value="3573">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lekhok" value="3574">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lekkao" value="3577">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_leknung" value="3569">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lekpaet" value="3576">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_leksam" value="3571">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_leksi" value="3572">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_leksong" value="3570">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_leksun" value="3568">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lochula" value="3532">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_loling" value="3525">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_lu" value="3526">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maichattawa" value="3563">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maiek" value="3560">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maihanakat" value="3537">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maihanakat_maitho" value="3550">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maitaikhu" value="3559">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maitho" value="3561">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maitri" value="3562">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_maiyamok" value="3558">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_moma" value="3521">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_ngongu" value="3495">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_nikhahit" value="3565">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_nonen" value="3507">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_nonu" value="3513">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_oang" value="3533">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_paiyannoi" value="3535">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_phinthu" value="3546">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_phophan" value="3518">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_phophung" value="3516">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_phosamphao" value="3520">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_popla" value="3515">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_rorua" value="3523">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_ru" value="3524">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraa" value="3536">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraaa" value="3538">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraae" value="3553">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraaimaimalai" value="3556">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraaimaimuan" value="3555">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraam" value="3539">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sarae" value="3552">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sarai" value="3540">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraii" value="3541">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sarao" value="3554">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sarau" value="3544">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_saraue" value="3542">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sarauee" value="3543">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sarauu" value="3545">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sorusi" value="3529">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sosala" value="3528">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_soso" value="3499">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_sosua" value="3530">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thanthakhat" value="3564">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thonangmontho" value="3505">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thophuthao" value="3506">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thothahan" value="3511">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thothan" value="3504">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thothong" value="3512">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_thothung" value="3510">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_topatak" value="3503">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_totao" value="3509">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_wowaen" value="3527">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_yoyak" value="3522">
+      <type name="int"/>
+    </constant>
+    <constant name="Thai_yoying" value="3501">
+      <type name="int"/>
+    </constant>
+    <constant name="Thorn" value="222">
+      <type name="int"/>
+    </constant>
+    <constant name="Time" value="269025183">
+      <type name="int"/>
+    </constant>
+    <record name="TimeCoord" c:type="GdkTimeCoord">
+      <field name="time" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="axes" writable="1">
+        <array zero-terminated="0" c:type="gdouble" fixed-size="128">
+          <type name="double"/>
+        </array>
+      </field>
+    </record>
+    <constant name="ToDoList" value="269025055">
+      <type name="int"/>
+    </constant>
+    <constant name="Tools" value="269025153">
+      <type name="int"/>
+    </constant>
+    <constant name="TopMenu" value="269025186">
+      <type name="int"/>
+    </constant>
+    <constant name="Touroku" value="65323">
+      <type name="int"/>
+    </constant>
+    <record name="Trapezoid" c:type="GdkTrapezoid">
+      <field name="y1" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+      <field name="x11" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+      <field name="x21" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+      <field name="y2" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+      <field name="x12" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+      <field name="x22" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+    </record>
+    <constant name="Travel" value="269025154">
+      <type name="int"/>
+    </constant>
+    <constant name="Tslash" value="940">
+      <type name="int"/>
+    </constant>
+    <constant name="U" value="85">
+      <type name="int"/>
+    </constant>
+    <constant name="UWB" value="269025174">
+      <type name="int"/>
+    </constant>
+    <constant name="Uacute" value="218">
+      <type name="int"/>
+    </constant>
+    <constant name="Ubelowdot" value="16785124">
+      <type name="int"/>
+    </constant>
+    <constant name="Ubreve" value="733">
+      <type name="int"/>
+    </constant>
+    <constant name="Ucircumflex" value="219">
+      <type name="int"/>
+    </constant>
+    <constant name="Udiaeresis" value="220">
+      <type name="int"/>
+    </constant>
+    <constant name="Udoubleacute" value="475">
+      <type name="int"/>
+    </constant>
+    <constant name="Ugrave" value="217">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhook" value="16785126">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhorn" value="16777647">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhornacute" value="16785128">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhornbelowdot" value="16785136">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhorngrave" value="16785130">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhornhook" value="16785132">
+      <type name="int"/>
+    </constant>
+    <constant name="Uhorntilde" value="16785134">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_GHE_WITH_UPTURN" value="1725">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_I" value="1718">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_IE" value="1716">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_YI" value="1719">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_ghe_with_upturn" value="1709">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_i" value="1702">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_ie" value="1700">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukrainian_yi" value="1703">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukranian_I" value="1718">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukranian_JE" value="1716">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukranian_YI" value="1719">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukranian_i" value="1702">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukranian_je" value="1700">
+      <type name="int"/>
+    </constant>
+    <constant name="Ukranian_yi" value="1703">
+      <type name="int"/>
+    </constant>
+    <constant name="Umacron" value="990">
+      <type name="int"/>
+    </constant>
+    <constant name="Undo" value="65381">
+      <type name="int"/>
+    </constant>
+    <constant name="Ungrab" value="269024800">
+      <type name="int"/>
+    </constant>
+    <constant name="Uogonek" value="985">
+      <type name="int"/>
+    </constant>
+    <constant name="Up" value="65362">
+      <type name="int"/>
+    </constant>
+    <constant name="Uring" value="473">
+      <type name="int"/>
+    </constant>
+    <constant name="User1KB" value="269025157">
+      <type name="int"/>
+    </constant>
+    <constant name="User2KB" value="269025158">
+      <type name="int"/>
+    </constant>
+    <constant name="UserPB" value="269025156">
+      <type name="int"/>
+    </constant>
+    <constant name="Utilde" value="989">
+      <type name="int"/>
+    </constant>
+    <constant name="V" value="86">
+      <type name="int"/>
+    </constant>
+    <constant name="VendorHome" value="269025076">
+      <type name="int"/>
+    </constant>
+    <constant name="Video" value="269025159">
+      <type name="int"/>
+    </constant>
+    <constant name="View" value="269025185">
+      <type name="int"/>
+    </constant>
+    <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:type="GdkVisual"
+           parent="GObject.Object"
+           glib:type-name="GdkVisual"
+           glib:get-type="gdk_visual_get_type"
+           glib:type-struct="VisualClass">
+      <function name="get_best_depth"
+                c:identifier="gdk_visual_get_best_depth"
+                doc="Get the best available depth for the default GDK screen.  &quot;Best&quot;
+means &quot;largest,&quot; i.e. 32 preferred over 24 preferred over 8 bits
+per pixel.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </function>
+      <function name="get_best_type"
+                c:identifier="gdk_visual_get_best_type"
+                doc="Return the best available visual type for the default GDK screen.">
+        <return-value transfer-ownership="full">
+          <type name="VisualType" c:type="GdkVisualType"/>
+        </return-value>
+      </function>
+      <function name="get_system"
+                c:identifier="gdk_visual_get_system"
+                doc="Get the system&apos;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.">
+        <return-value transfer-ownership="none" doc="system visual">
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </function>
+      <function name="get_best"
+                c:identifier="gdk_visual_get_best"
+                doc="Get the visual with the most available colors for the default
+GDK screen. The return value should not be freed.">
+        <return-value transfer-ownership="none" doc="best visual">
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </function>
+      <function name="get_best_with_depth"
+                c:identifier="gdk_visual_get_best_with_depth"
+                doc="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.">
+        <return-value transfer-ownership="none"
+                      doc="best visual for the given depth">
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+        <parameters>
+          <parameter name="depth" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_best_with_type"
+                c:identifier="gdk_visual_get_best_with_type"
+                doc="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">
+        <return-value transfer-ownership="none"
+                      doc="best visual of the given type">
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+        <parameters>
+          <parameter name="visual_type" transfer-ownership="none">
+            <type name="VisualType" c:type="GdkVisualType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_best_with_both"
+                c:identifier="gdk_visual_get_best_with_both"
+                doc="Combines gdk_visual_get_best_with_depth() and gdk_visual_get_best_with_type().">
+        <return-value transfer-ownership="none"
+                      doc="best visual with both @depth and">
+          <type name="Visual" c:type="GdkVisual*"/>
+        </return-value>
+        <parameters>
+          <parameter name="depth" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="visual_type" transfer-ownership="none">
+            <type name="VisualType" c:type="GdkVisualType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_screen"
+              c:identifier="gdk_visual_get_screen"
+              doc="Gets the screen to which this visual belongs"
+              version="2.2">
+        <return-value transfer-ownership="none"
+                      doc="the screen to which this visual belongs.">
+          <type name="Screen" c:type="GdkScreen*"/>
+        </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="int" c:type="gint"/>
+      </field>
+      <field name="byte_order">
+        <type name="ByteOrder" c:type="GdkByteOrder"/>
+      </field>
+      <field name="colormap_size">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="bits_per_rgb">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="red_mask">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="red_shift">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="red_prec">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="green_mask">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="green_shift">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="green_prec">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="blue_mask">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="blue_shift">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="blue_prec">
+        <type name="int" c:type="gint"/>
+      </field>
+    </class>
+    <record name="VisualClass"
+            c:type="GdkVisualClass"
+            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>
+    <constant name="VoidSymbol" value="16777215">
+      <type name="int"/>
+    </constant>
+    <constant name="W" value="87">
+      <type name="int"/>
+    </constant>
+    <constant name="WLAN" value="269025173">
+      <type name="int"/>
+    </constant>
+    <bitfield name="WMDecoration"
+              glib:type-name="GdkWMDecoration"
+              glib:get-type="gdk_wm_decoration_get_type"
+              c:type="GdkWMDecoration">
+      <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">
+      <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>
+    <constant name="WWW" value="269025070">
+      <type name="int"/>
+    </constant>
+    <constant name="Wacute" value="16785026">
+      <type name="int"/>
+    </constant>
+    <constant name="WakeUp" value="269025067">
+      <type name="int"/>
+    </constant>
+    <constant name="Wcircumflex" value="16777588">
+      <type name="int"/>
+    </constant>
+    <constant name="Wdiaeresis" value="16785028">
+      <type name="int"/>
+    </constant>
+    <constant name="WebCam" value="269025167">
+      <type name="int"/>
+    </constant>
+    <constant name="Wgrave" value="16785024">
+      <type name="int"/>
+    </constant>
+    <constant name="WheelButton" value="269025160">
+      <type name="int"/>
+    </constant>
+    <class name="Window"
+           c:type="GdkWindow"
+           parent="Drawable"
+           glib:type-name="GdkWindow"
+           glib:get-type="gdk_window_object_get_type">
+      <constructor name="new"
+                   c:identifier="gdk_window_new"
+                   doc="the default root window for the default display.
+Creates a new #GdkWindow using the attributes from
+display, @parent must be specified.">
+        <return-value transfer-ownership="none" doc="the new #GdkWindow">
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkWindow, or %NULL to create the window as a child of">
+            <type name="Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="WindowAttr" c:type="GdkWindowAttr*"/>
+          </parameter>
+          <parameter name="attributes_mask" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="at_pointer"
+                c:identifier="gdk_window_at_pointer"
+                doc="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&apos;t been created
+for it with gdk_window_foreign_new())
+gdk_display_get_window_at_pointer() instead.">
+        <return-value transfer-ownership="none"
+                      doc="window under the mouse pointer">
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="win_x"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for origin of the window under the pointer">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="win_y"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for origin of the window under the pointer">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="foreign_new"
+                c:identifier="gdk_window_foreign_new"
+                doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="anid" transfer-ownership="none">
+            <type name="NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="lookup"
+                c:identifier="gdk_window_lookup"
+                doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="anid" transfer-ownership="none">
+            <type name="NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="foreign_new_for_display"
+                c:identifier="gdk_window_foreign_new_for_display"
+                doc="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&apos;t exist already."
+                version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <type name="Display" c:type="GdkDisplay*"/>
+          </parameter>
+          <parameter name="anid" transfer-ownership="none">
+            <type name="NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="lookup_for_display"
+                c:identifier="gdk_window_lookup_for_display"
+                doc="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."
+                version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <type name="Display" c:type="GdkDisplay*"/>
+          </parameter>
+          <parameter name="anid" transfer-ownership="none">
+            <type name="NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_toplevels"
+                c:identifier="gdk_window_get_toplevels"
+                doc="Obtains a list of all toplevel windows known to GDK on the default
+screen (see gdk_screen_get_toplevel_windows()).
+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."
+                deprecated="Use gdk_screen_get_toplevel_windows() instead."
+                deprecated-version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </function>
+      <function name="process_all_updates"
+                c:identifier="gdk_window_process_all_updates"
+                doc="Calls gdk_window_process_updates() for all windows (see #GdkWindow)
+in the application.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </function>
+      <function name="set_debug_updates"
+                c:identifier="gdk_window_set_debug_updates"
+                doc="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&apos;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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="constrain_size"
+                c:identifier="gdk_window_constrain_size"
+                doc="Constrains a desired width and height according to a
+set of geometry hints (such as minimum and maximum size).">
+        <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="GdkGeometry*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </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>
+          <parameter name="new_width"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="new_height"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="destroy"
+              c:identifier="gdk_window_destroy"
+              doc="Destroys the window system resources associated with @window and decrements @window&apos;s
+reference count. The window system resources for all children of @window are also
+destroyed, but the children&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_window_type"
+              c:identifier="gdk_window_get_window_type"
+              doc="Gets the type of the window. See #GdkWindowType.">
+        <return-value transfer-ownership="full">
+          <type name="WindowType" c:type="GdkWindowType"/>
+        </return-value>
+      </method>
+      <method name="is_destroyed"
+              c:identifier="gdk_window_is_destroyed"
+              doc="Check to see if a window is destroyed.."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="show"
+              c:identifier="gdk_window_show"
+              doc="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&apos;s visible onscreen. Its opposite
+is gdk_window_hide().
+When implementing a #GtkWidget, you should call this function on the widget&apos;s
+#GdkWindow as part of the &quot;map&quot; method.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="hide"
+              c:identifier="gdk_window_hide"
+              doc="For toplevel windows, withdraws them, so they will no longer be
+known to the window manager; for all windows, unmaps them, so
+they won&apos;t be displayed. Normally done automatically as
+part of gtk_widget_hide().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="withdraw"
+              c:identifier="gdk_window_withdraw"
+              doc="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.">
+        <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="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&apos;t really use XMapWindow() directly on a GDK window).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="move"
+              c:identifier="gdk_window_move"
+              doc="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&apos;re also planning to resize the window, use gdk_window_move_resize()
+to both move and resize simultaneously, for a nicer visual effect.">
+        <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>
+        </parameters>
+      </method>
+      <method name="resize"
+              c:identifier="gdk_window_resize"
+              doc="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&apos;re also planning to move the window, use gdk_window_move_resize()
+to both move and resize simultaneously, for a nicer visual effect.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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="move_resize"
+              c:identifier="gdk_window_move_resize"
+              doc="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&apos;t use gdk_window_move_resize().)">
+        <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>
+      </method>
+      <method name="reparent"
+              c:identifier="gdk_window_reparent"
+              doc="Reparents @window into the given @new_parent. The window being
+reparented will be unmapped as a side effect.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_parent" transfer-ownership="none">
+            <type name="Window" c:type="GdkWindow*"/>
+          </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>
+        </parameters>
+      </method>
+      <method name="clear"
+              c:identifier="gdk_window_clear"
+              doc="Clears an entire @window to the background color or background pixmap.">
+        <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="Clears an area of @window to the background color or background pixmap.">
+        <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>
+      </method>
+      <method name="clear_area_e"
+              c:identifier="gdk_window_clear_area_e"
+              doc="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.">
+        <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>
+      </method>
+      <method name="raise"
+              c:identifier="gdk_window_raise"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="lower"
+              c:identifier="gdk_window_lower"
+              doc="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&apos;t call this
+function before gdk_window_show(). (Try gdk_window_show_unraised().)">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="restack"
+              c:identifier="gdk_window_restack"
+              doc="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."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sibling"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkWindow that is a sibling of @window, or %NULL">
+            <type name="Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="above" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="focus"
+              c:identifier="gdk_window_focus"
+              doc="Sets keyboard focus to @window. In most cases, gtk_window_present()
+should be used on a #GtkWindow, rather than calling this function.">
+        <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>
+        </parameters>
+      </method>
+      <method name="set_user_data"
+              c:identifier="gdk_window_set_user_data"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_override_redirect"
+              c:identifier="gdk_window_set_override_redirect"
+              doc="An override redirect window is not under the control of the window manager.
+This means it won&apos;t have a titlebar, won&apos;t be minimizable, etc. - it will
+be entirely under the control of the application. The window manager
+can&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="override_redirect" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_accept_focus"
+              c:identifier="gdk_window_set_accept_focus"
+              doc="Setting @accept_focus to %FALSE hints the desktop environment that the
+window doesn&apos;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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accept_focus" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_focus_on_map"
+              c:identifier="gdk_window_set_focus_on_map"
+              doc="Setting @focus_on_map to %FALSE hints the desktop environment that the
+window doesn&apos;t want to receive input focus when it is mapped.
+focus_on_map should be turned off for windows that aren&apos;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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="focus_on_map" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_filter"
+              c:identifier="gdk_window_add_filter"
+              doc="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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="function"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="FilterFunc" c:type="GdkFilterFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_filter"
+              c:identifier="gdk_window_remove_filter"
+              doc="Remove a filter previously added with gdk_window_add_filter().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="function"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="FilterFunc" c:type="GdkFilterFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scroll"
+              c:identifier="gdk_window_scroll"
+              doc="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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="dy" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_region"
+              c:identifier="gdk_window_move_region"
+              doc="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."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="region" transfer-ownership="none">
+            <type name="Region" c:type="GdkRegion*"/>
+          </parameter>
+          <parameter name="dx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="dy" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ensure_native"
+              c:identifier="gdk_window_ensure_native"
+              doc="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."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="shape_combine_mask"
+              c:identifier="gdk_window_shape_combine_mask"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="Bitmap" c:type="GdkBitmap*"/>
+          </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>
+        </parameters>
+      </method>
+      <method name="shape_combine_region"
+              c:identifier="gdk_window_shape_combine_region"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="shape_region" transfer-ownership="none">
+            <type name="Region" c:type="GdkRegion*"/>
+          </parameter>
+          <parameter name="offset_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="offset_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_child_shapes"
+              c:identifier="gdk_window_set_child_shapes"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_composited"
+              c:identifier="gdk_window_set_composited"
+              doc="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&apos;s expose handler
+to manually merge the off-screen content onto the screen in
+whatever way it sees fit. See &lt;xref linkend=&quot;composited-window-example&quot;/&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."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="composited" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge_child_shapes"
+              c:identifier="gdk_window_merge_child_shapes"
+              doc="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&apos;s shape mask in the set of shapes to
+be merged.">
+        <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"
+              doc="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
+&quot;clickable&quot;.
+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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mask"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="shape mask, or %NULL">
+            <type name="Bitmap" c:type="GdkBitmap*"/>
+          </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>
+        </parameters>
+      </method>
+      <method name="input_shape_combine_region"
+              c:identifier="gdk_window_input_shape_combine_region"
+              doc="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
+&quot;clickable&quot;.
+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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="shape_region" transfer-ownership="none">
+            <type name="Region" c:type="GdkRegion*"/>
+          </parameter>
+          <parameter name="offset_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="offset_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_child_input_shapes"
+              c:identifier="gdk_window_set_child_input_shapes"
+              doc="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."
+              version="2.10">
+        <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"
+              doc="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&apos;s input shape mask in the set of
+shapes to be merged."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="is_visible"
+              c:identifier="gdk_window_is_visible"
+              doc="Checks whether the window has been mapped (with gdk_window_show() or
+gdk_window_show_unraised()).">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_viewable"
+              c:identifier="gdk_window_is_viewable"
+              doc="Check if the window and all ancestors of the window are
+mapped. (This is not necessarily &quot;viewable&quot; in the X sense, since
+we only check as far as we have GDK window parents, not to the root
+window.)">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_state"
+              c:identifier="gdk_window_get_state"
+              doc="Gets the bitwise OR of the currently active window state flags,
+from the #GdkWindowState enumeration.">
+        <return-value transfer-ownership="full">
+          <type name="WindowState" c:type="GdkWindowState"/>
+        </return-value>
+      </method>
+      <method name="set_static_gravities"
+              c:identifier="gdk_window_set_static_gravities"
+              doc="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&apos;t worry about it unless you have to.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_static" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_hints"
+              c:identifier="gdk_window_set_hints"
+              doc="This function is broken and useless and you should ignore it.
+If using GTK+, use functions such as gtk_window_resize(), gtk_window_set_size_request(),
+gtk_window_move(), gtk_window_parse_geometry(), and gtk_window_set_geometry_hints(),
+depending on what you&apos;re trying to do.
+If using GDK directly, use gdk_window_set_geometry_hints().">
+        <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="min_width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="min_height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="max_width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="max_height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_type_hint"
+              c:identifier="gdk_window_set_type_hint"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hint" transfer-ownership="none">
+            <type name="WindowTypeHint" c:type="GdkWindowTypeHint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_type_hint"
+              c:identifier="gdk_window_get_type_hint"
+              doc="This function returns the type hint set for a window."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="WindowTypeHint" c:type="GdkWindowTypeHint"/>
+        </return-value>
+      </method>
+      <method name="set_modal_hint"
+              c:identifier="gdk_window_set_modal_hint"
+              doc="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()">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="modal" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_skip_taskbar_hint"
+              c:identifier="gdk_window_set_skip_taskbar_hint"
+              doc="Toggles whether a window should appear in a task list or window
+list. If a window&apos;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."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="skips_taskbar" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_skip_pager_hint"
+              c:identifier="gdk_window_set_skip_pager_hint"
+              doc="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&apos;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."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="skips_pager" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_urgency_hint"
+              c:identifier="gdk_window_set_urgency_hint"
+              doc="Toggles whether a window needs the user&apos;s
+urgent attention."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="urgent" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_geometry_hints"
+              c:identifier="gdk_window_set_geometry_hints"
+              doc="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&apos;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.">
+        <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="GdkGeometry*"/>
+          </parameter>
+          <parameter name="geom_mask" transfer-ownership="none">
+            <type name="WindowHints" c:type="GdkWindowHints"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_paint_rect"
+              c:identifier="gdk_window_begin_paint_rect"
+              doc="A convenience wrapper around gdk_window_begin_paint_region() which
+creates a rectangular region for you. See
+gdk_window_begin_paint_region() for details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rectangle" transfer-ownership="none">
+            <type name="Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_paint_region"
+              c:identifier="gdk_window_begin_paint_region"
+              doc="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&apos;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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="region" transfer-ownership="none">
+            <type name="Region" c:type="GdkRegion*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="end_paint"
+              c:identifier="gdk_window_end_paint"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="flush"
+              c:identifier="gdk_window_flush"
+              doc="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&apos;t use double buffering this
+will be called automatically before sending the expose event."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_title"
+              c:identifier="gdk_window_set_title"
+              doc="Sets the title of a toplevel window, to be displayed in the titlebar.
+If you haven&apos;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.">
+        <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_role"
+              c:identifier="gdk_window_set_role"
+              doc="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&apos;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&apos;t matter what string
+you use for the role, as long as you have a different role for each
+non-interchangeable kind of window.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="role" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_startup_id"
+              c:identifier="gdk_window_set_startup_id"
+              doc="When using GTK+, typically you should use gtk_window_set_startup_id()
+instead of this low-level function."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="startup_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_transient_for"
+              c:identifier="gdk_window_set_transient_for"
+              doc="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&apos;re using #GtkWindow or
+#GtkDialog.">
+        <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="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_background"
+              c:identifier="gdk_window_set_background"
+              doc="Sets the background color of @window. (However, when using GTK+,
+set the background of a widget with gtk_widget_modify_bg() - if
+you&apos;re an application - or gtk_style_set_background() - if you&apos;re
+implementing a custom widget.)
+The @color must be allocated; gdk_rgb_find_color() is the best way
+to allocate a color.
+See also gdk_window_set_back_pixmap().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_back_pixmap"
+              c:identifier="gdk_window_set_back_pixmap"
+              doc="Sets the background pixmap of @window. May also be used to set a
+background of &quot;None&quot; 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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixmap"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkPixmap, or %NULL">
+            <type name="Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="parent_relative" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor"
+              c:identifier="gdk_window_set_cursor"
+              doc="Sets the 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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cursor" transfer-ownership="none">
+            <type name="Cursor" c:type="GdkCursor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cursor"
+              c:identifier="gdk_window_get_cursor"
+              doc="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"
+              version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="Cursor" c:type="GdkCursor*"/>
+        </return-value>
+      </method>
+      <method name="get_user_data"
+              c:identifier="gdk_window_get_user_data"
+              doc="Retrieves the user data for @window, which is normally the widget
+that @window belongs to. See gdk_window_set_user_data().">
+        <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="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_geometry"
+              c:identifier="gdk_window_get_geometry"
+              doc="Any of the return location arguments to this function may be %NULL,
+if you aren&apos;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.
+/note&gt;">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </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>
+          <parameter name="depth" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_position"
+              c:identifier="gdk_window_get_position"
+              doc="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&apos;s parent window.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_origin"
+              c:identifier="gdk_window_get_origin"
+              doc="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.)">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_root_coords"
+              c:identifier="gdk_window_get_root_coords"
+              doc="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."
+              version="2.18">
+        <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="root_x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="root_y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_deskrelative_origin"
+              c:identifier="gdk_window_get_deskrelative_origin"
+              doc="This gets the origin of a #GdkWindow relative to
+an Enlightenment-window-manager desktop. As long as you don&apos;t
+assume that the user&apos;s desktop/workspace covers the entire
+root window (i.e. you don&apos;t assume that the desktop begins
+at root window coordinate 0,0) this function is not necessary.
+It&apos;s deprecated for that reason.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_root_origin"
+              c:identifier="gdk_window_get_root_origin"
+              doc="Obtains the top-left corner of the window manager frame in root
+window coordinates.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_frame_extents"
+              c:identifier="gdk_window_get_frame_extents"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pointer"
+              c:identifier="gdk_window_get_pointer"
+              doc="return the X coordinate
+return the Y coordinate
+modifier mask
+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&apos;t known to GDK">
+        <return-value transfer-ownership="none"
+                      doc="the window containing the pointer (as with">
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for X coordinate of pointer or %NULL to not">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for Y coordinate of pointer or %NULL to not">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="mask"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for modifier mask or %NULL to not return the">
+            <type name="ModifierType" c:type="GdkModifierType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_parent"
+              c:identifier="gdk_window_get_parent"
+              doc="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&apos;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.">
+        <return-value transfer-ownership="full">
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_toplevel"
+              c:identifier="gdk_window_get_toplevel"
+              doc="Gets the toplevel window that&apos;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.">
+        <return-value transfer-ownership="full">
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_children"
+              c:identifier="gdk_window_get_children"
+              doc="Gets the list of children of @window known to GDK.
+This function only returns children created via GDK,
+so for example it&apos;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.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="peek_children"
+              c:identifier="gdk_window_peek_children"
+              doc="Like gdk_window_get_children(), but does not copy the list of
+children, so the list does not need to be freed.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_events"
+              c:identifier="gdk_window_get_events"
+              doc="Gets the event mask for @window. See gdk_window_set_events().">
+        <return-value transfer-ownership="full">
+          <type name="EventMask" c:type="GdkEventMask"/>
+        </return-value>
+      </method>
+      <method name="set_events"
+              c:identifier="gdk_window_set_events"
+              doc="The event mask for a window determines which events will be reported
+for that 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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event_mask" transfer-ownership="none">
+            <type name="EventMask" c:type="GdkEventMask"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_list"
+              c:identifier="gdk_window_set_icon_list"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbufs" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon"
+              c:identifier="gdk_window_set_icon"
+              doc="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&apos;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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_window" transfer-ownership="none">
+            <type name="Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="pixmap" transfer-ownership="none">
+            <type name="Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask"
+                     transfer-ownership="none"
+                     doc="to use as mask for @pixmap, or %NULL to have none">
+            <type name="Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_name"
+              c:identifier="gdk_window_set_icon_name"
+              doc="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.">
+        <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="set_group"
+              c:identifier="gdk_window_set_group"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="leader" transfer-ownership="none">
+            <type name="Window" c:type="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_group"
+              c:identifier="gdk_window_get_group"
+              doc="Returns the group leader window for @window. See gdk_window_set_group()."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="set_decorations"
+              c:identifier="gdk_window_set_decorations"
+              doc="&quot;Decorations&quot; 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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="decorations" transfer-ownership="none">
+            <type name="WMDecoration" c:type="GdkWMDecoration"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_decorations"
+              c:identifier="gdk_window_get_decorations"
+              doc="Returns the decorations set on the GdkWindow with #gdk_window_set_decorations">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="decorations" transfer-ownership="none">
+            <type name="WMDecoration" c:type="GdkWMDecoration*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_functions"
+              c:identifier="gdk_window_set_functions"
+              doc="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&apos;t include #GDK_FUNC_ALL, it indicates which functions to
+enable.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="functions" transfer-ownership="none">
+            <type name="WMFunction" c:type="GdkWMFunction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="beep"
+              c:identifier="gdk_window_beep"
+              doc="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()."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="iconify"
+              c:identifier="gdk_window_iconify"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="deiconify"
+              c:identifier="gdk_window_deiconify"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stick"
+              c:identifier="gdk_window_stick"
+              doc="&quot;Pins&quot; a window such that it&apos;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&apos;t support this operation,
+there&apos;s nothing you can do to force it to happen.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unstick"
+              c:identifier="gdk_window_unstick"
+              doc="Reverse operation for gdk_window_stick(); see gdk_window_stick(),
+and gtk_window_unstick().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="maximize"
+              c:identifier="gdk_window_maximize"
+              doc="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&apos;t have a concept of
+&quot;maximized&quot;; so you can&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unmaximize"
+              c:identifier="gdk_window_unmaximize"
+              doc="Unmaximizes the window. If the window wasn&apos;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&apos;t have a
+concept of &quot;maximized&quot;; so you can&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="fullscreen"
+              c:identifier="gdk_window_fullscreen"
+              doc="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&apos;t have a concept of &quot;fullscreen&quot;; so you can&apos;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."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unfullscreen"
+              c:identifier="gdk_window_unfullscreen"
+              doc="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&apos;t have a concept of &quot;fullscreen&quot;; so you can&apos;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."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_keep_above"
+              c:identifier="gdk_window_set_keep_above"
+              doc="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&apos;t have a concept of
+&quot;keep above&quot;; so you can&apos;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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_keep_below"
+              c:identifier="gdk_window_set_keep_below"
+              doc="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&apos;t have a concept of
+&quot;keep below&quot;; so you can&apos;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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_opacity"
+              c:identifier="gdk_window_set_opacity"
+              doc="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()."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opacity" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="register_dnd" c:identifier="gdk_window_register_dnd">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="begin_resize_drag"
+              c:identifier="gdk_window_begin_resize_drag"
+              doc="Begins a window resize operation (for a toplevel window).
+You might use this function to implement a &quot;window resize grip,&quot; for
+example; in fact #GtkStatusbar uses it. The function works best
+with window managers that support the &lt;ulink url=&quot;http://www.freedesktop.org/Standards/wm-spec&quot;&gt;Extended Window Manager Hints&lt;/ulink&gt;, but has a
+fallback implementation for other window managers.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="edge" transfer-ownership="none">
+            <type name="WindowEdge" c:type="GdkWindowEdge"/>
+          </parameter>
+          <parameter name="button" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="root_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="root_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_move_drag"
+              c:identifier="gdk_window_begin_move_drag"
+              doc="Begins a window move operation (for a toplevel window).  You might
+use this function to implement a &quot;window move grip,&quot; for
+example. The function works best with window managers that support
+the &lt;ulink url=&quot;http://www.freedesktop.org/Standards/wm-spec&quot;&gt;Extended
+Window Manager Hints&lt;/ulink&gt;, but has a fallback implementation for
+other window managers.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="button" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="root_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="root_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="invalidate_rect"
+              c:identifier="gdk_window_invalidate_rect"
+              doc="window
+A convenience wrapper around gdk_window_invalidate_region() which
+invalidates a rectangular region. See
+gdk_window_invalidate_region() for details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rect"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="rectangle to invalidate or %NULL to invalidate the whole">
+            <type name="Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="invalidate_children" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="invalidate_region"
+              c:identifier="gdk_window_invalidate_region"
+              doc="Adds @region to the update area for @window. The update area is the
+region that needs to be redrawn, or &quot;dirty region.&quot; 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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="region" transfer-ownership="none">
+            <type name="Region" c:type="GdkRegion*"/>
+          </parameter>
+          <parameter name="invalidate_children" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="invalidate_maybe_recurse"
+              c:identifier="gdk_window_invalidate_maybe_recurse"
+              doc="%NULL means never recurse.
+Adds @region to the update area for @window. The update area is the
+region that needs to be redrawn, or &quot;dirty region.&quot; 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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="region" transfer-ownership="none">
+            <type name="Region" c:type="GdkRegion*"/>
+          </parameter>
+          <parameter name="child_func" transfer-ownership="none">
+            <type name="any" c:type="any*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_update_area"
+              c:identifier="gdk_window_get_update_area"
+              doc="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 gdk_region_destroy() on the returned region if it&apos;s non-%NULL.">
+        <return-value transfer-ownership="full">
+          <type name="Region" c:type="GdkRegion*"/>
+        </return-value>
+      </method>
+      <method name="freeze_updates"
+              c:identifier="gdk_window_freeze_updates"
+              doc="Temporarily freezes a window such that it won&apos;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.">
+        <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="Thaws a window frozen with gdk_window_freeze_updates().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="freeze_toplevel_updates_libgtk_only"
+              c:identifier="gdk_window_freeze_toplevel_updates_libgtk_only"
+              doc="Temporarily freezes a window and all its descendants such that it won&apos;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+.">
+        <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="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+.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="process_updates"
+              c:identifier="gdk_window_process_updates"
+              doc="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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="update_children" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_internal_paint_info"
+              c:identifier="gdk_window_get_internal_paint_info"
+              doc="done.
+and the underlying window system primitive coordinates for
+*@real_drawable.
+and the underlying window system primitive coordinates for
+*@real_drawable.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="real_drawable"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="location to store the drawable to which drawing should be">
+            <type name="Drawable" c:type="GdkDrawable**"/>
+          </parameter>
+          <parameter name="x_offset"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="location to store the X offset between coordinates in @window,">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y_offset"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="location to store the Y offset between coordinates in @window,">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enable_synchronized_configure"
+              c:identifier="gdk_window_enable_synchronized_configure"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="configure_finished"
+              c:identifier="gdk_window_configure_finished"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="geometry_changed"
+              c:identifier="gdk_window_geometry_changed"
+              doc="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."
+              version="2.18">
+        <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"
+              doc="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."
+              version="2.14">
+        <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="src_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="src_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="dest_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="dest_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="remove_redirection"
+              c:identifier="gdk_window_remove_redirection"
+              doc="Removes any active redirection started by
+gdk_window_redirect_to_drawable()."
+              version="2.14">
+        <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>
+      <property name="cursor"
+                version="2.18"
+                writable="1"
+                doc="The mouse pointer for a #GdkWindow. See gdk_window_set_cursor() and
+gdk_window_get_cursor() for details.">
+        <type name="Cursor" c:type="GdkCursor"/>
+      </property>
+      <glib:signal name="from-embedder"
+                   doc="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."
+                   version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="embedder-x" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="embedder-y" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="offscreen-x" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="offscreen-y" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="pick-embedded-child"
+                   doc="The ::pick-embedded-child signal is emitted to find an embedded
+child at the given position."
+                   version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="Window" c:type="GdkWindow"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="to-embedder"
+                   doc="The ::to-embedder signal is emitted to translate coordinates
+in an offscreen window to its embedder.
+See also #GtkWindow::from-embedder."
+                   version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="offscreen-x" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="offscreen-y" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="embedder-x" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="embedder-y" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="WindowAttr" c:type="GdkWindowAttr">
+      <field name="title" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="event_mask" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <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="width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="int" 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="boolean" 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">
+      <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">
+      <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>
+    <constant name="WindowClear" value="269025109">
+      <type name="int"/>
+    </constant>
+    <enumeration name="WindowEdge"
+                 glib:type-name="GdkWindowEdge"
+                 glib:get-type="gdk_window_edge_get_type"
+                 c:type="GdkWindowEdge">
+      <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">
+      <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">
+    </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">
+    </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">
+      <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="dialog"
+              value="3"
+              c:identifier="GDK_WINDOW_DIALOG"
+              glib:nick="dialog"/>
+      <member name="temp"
+              value="4"
+              c:identifier="GDK_WINDOW_TEMP"
+              glib:nick="temp"/>
+      <member name="foreign"
+              value="5"
+              c:identifier="GDK_WINDOW_FOREIGN"
+              glib:nick="foreign"/>
+      <member name="offscreen"
+              value="6"
+              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">
+      <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>
+    <constant name="WonSign" value="16785577">
+      <type name="int"/>
+    </constant>
+    <constant name="Word" value="269025161">
+      <type name="int"/>
+    </constant>
+    <constant name="X" value="88">
+      <type name="int"/>
+    </constant>
+    <constant name="Xabovedot" value="16785034">
+      <type name="int"/>
+    </constant>
+    <constant name="Xfer" value="269025162">
+      <type name="int"/>
+    </constant>
+    <constant name="Y" value="89">
+      <type name="int"/>
+    </constant>
+    <constant name="Yacute" value="221">
+      <type name="int"/>
+    </constant>
+    <constant name="Ybelowdot" value="16785140">
+      <type name="int"/>
+    </constant>
+    <constant name="Ycircumflex" value="16777590">
+      <type name="int"/>
+    </constant>
+    <constant name="Ydiaeresis" value="5054">
+      <type name="int"/>
+    </constant>
+    <constant name="Yellow" value="269025189">
+      <type name="int"/>
+    </constant>
+    <constant name="Ygrave" value="16785138">
+      <type name="int"/>
+    </constant>
+    <constant name="Yhook" value="16785142">
+      <type name="int"/>
+    </constant>
+    <constant name="Ytilde" value="16785144">
+      <type name="int"/>
+    </constant>
+    <constant name="Z" value="90">
+      <type name="int"/>
+    </constant>
+    <constant name="Zabovedot" value="431">
+      <type name="int"/>
+    </constant>
+    <constant name="Zacute" value="428">
+      <type name="int"/>
+    </constant>
+    <constant name="Zcaron" value="430">
+      <type name="int"/>
+    </constant>
+    <constant name="Zen_Koho" value="65341">
+      <type name="int"/>
+    </constant>
+    <constant name="Zenkaku" value="65320">
+      <type name="int"/>
+    </constant>
+    <constant name="Zenkaku_Hankaku" value="65322">
+      <type name="int"/>
+    </constant>
+    <constant name="ZoomIn" value="269025163">
+      <type name="int"/>
+    </constant>
+    <constant name="ZoomOut" value="269025164">
+      <type name="int"/>
+    </constant>
+    <constant name="Zstroke" value="16777653">
+      <type name="int"/>
+    </constant>
+    <constant name="a" value="97">
+      <type name="int"/>
+    </constant>
+    <constant name="aacute" value="225">
+      <type name="int"/>
+    </constant>
+    <constant name="abelowdot" value="16785057">
+      <type name="int"/>
+    </constant>
+    <constant name="abovedot" value="511">
+      <type name="int"/>
+    </constant>
+    <constant name="abreve" value="483">
+      <type name="int"/>
+    </constant>
+    <constant name="abreveacute" value="16785071">
+      <type name="int"/>
+    </constant>
+    <constant name="abrevebelowdot" value="16785079">
+      <type name="int"/>
+    </constant>
+    <constant name="abrevegrave" value="16785073">
+      <type name="int"/>
+    </constant>
+    <constant name="abrevehook" value="16785075">
+      <type name="int"/>
+    </constant>
+    <constant name="abrevetilde" value="16785077">
+      <type name="int"/>
+    </constant>
+    <constant name="acircumflex" value="226">
+      <type name="int"/>
+    </constant>
+    <constant name="acircumflexacute" value="16785061">
+      <type name="int"/>
+    </constant>
+    <constant name="acircumflexbelowdot" value="16785069">
+      <type name="int"/>
+    </constant>
+    <constant name="acircumflexgrave" value="16785063">
+      <type name="int"/>
+    </constant>
+    <constant name="acircumflexhook" value="16785065">
+      <type name="int"/>
+    </constant>
+    <constant name="acircumflextilde" value="16785067">
+      <type name="int"/>
+    </constant>
+    <constant name="acute" value="180">
+      <type name="int"/>
+    </constant>
+    <function name="add_client_message_filter"
+              c:identifier="gdk_add_client_message_filter"
+              doc="checked against the &lt;structfield&gt;message_type&lt;/structfield&gt; field of the
+XClientMessage event struct.
+Adds a filter to the default display to be called when X ClientMessage events
+are received. See gdk_display_add_client_message_filter().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="message_type" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="FilterFunc" c:type="GdkFilterFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="add_option_entries_libgtk_only"
+              c:identifier="gdk_add_option_entries_libgtk_only"
+              doc="Appends gdk option entries to the passed in option group. This is
+not public API and must not be used by applications.">
+      <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>
+    </function>
+    <constant name="adiaeresis" value="228">
+      <type name="int"/>
+    </constant>
+    <constant name="ae" value="230">
+      <type name="int"/>
+    </constant>
+    <constant name="agrave" value="224">
+      <type name="int"/>
+    </constant>
+    <constant name="ahook" value="16785059">
+      <type name="int"/>
+    </constant>
+    <constant name="amacron" value="992">
+      <type name="int"/>
+    </constant>
+    <constant name="ampersand" value="38">
+      <type name="int"/>
+    </constant>
+    <constant name="aogonek" value="433">
+      <type name="int"/>
+    </constant>
+    <constant name="apostrophe" value="39">
+      <type name="int"/>
+    </constant>
+    <constant name="approxeq" value="16785992">
+      <type name="int"/>
+    </constant>
+    <constant name="approximate" value="2248">
+      <type name="int"/>
+    </constant>
+    <constant name="aring" value="229">
+      <type name="int"/>
+    </constant>
+    <constant name="asciicircum" value="94">
+      <type name="int"/>
+    </constant>
+    <constant name="asciitilde" value="126">
+      <type name="int"/>
+    </constant>
+    <constant name="asterisk" value="42">
+      <type name="int"/>
+    </constant>
+    <constant name="at" value="64">
+      <type name="int"/>
+    </constant>
+    <constant name="atilde" value="227">
+      <type name="int"/>
+    </constant>
+    <function name="atom_intern" c:identifier="gdk_atom_intern">
+      <return-value transfer-ownership="full">
+        <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="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atom_intern_static_string"
+              c:identifier="gdk_atom_intern_static_string"
+              doc="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)."
+              version="2.10">
+      <return-value transfer-ownership="full">
+        <type name="Atom" c:type="GdkAtom"/>
+      </return-value>
+      <parameters>
+        <parameter name="atom_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="b" value="98">
+      <type name="int"/>
+    </constant>
+    <constant name="babovedot" value="16784899">
+      <type name="int"/>
+    </constant>
+    <constant name="backslash" value="92">
+      <type name="int"/>
+    </constant>
+    <constant name="ballotcross" value="2804">
+      <type name="int"/>
+    </constant>
+    <constant name="bar" value="124">
+      <type name="int"/>
+    </constant>
+    <constant name="because" value="16785973">
+      <type name="int"/>
+    </constant>
+    <function name="beep"
+              c:identifier="gdk_beep"
+              doc="Emits a short beep on the default display.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="bitmap_create_from_data"
+              c:identifier="gdk_bitmap_create_from_data">
+      <return-value transfer-ownership="full">
+        <type name="Bitmap" c:type="GdkBitmap*"/>
+      </return-value>
+      <parameters>
+        <parameter name="drawable" transfer-ownership="none">
+          <type name="Drawable" c:type="GdkDrawable*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </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>
+    </function>
+    <constant name="blank" value="2527">
+      <type name="int"/>
+    </constant>
+    <constant name="botintegral" value="2213">
+      <type name="int"/>
+    </constant>
+    <constant name="botleftparens" value="2220">
+      <type name="int"/>
+    </constant>
+    <constant name="botleftsqbracket" value="2216">
+      <type name="int"/>
+    </constant>
+    <constant name="botleftsummation" value="2226">
+      <type name="int"/>
+    </constant>
+    <constant name="botrightparens" value="2222">
+      <type name="int"/>
+    </constant>
+    <constant name="botrightsqbracket" value="2218">
+      <type name="int"/>
+    </constant>
+    <constant name="botrightsummation" value="2230">
+      <type name="int"/>
+    </constant>
+    <constant name="bott" value="2550">
+      <type name="int"/>
+    </constant>
+    <constant name="botvertsummationconnector" value="2228">
+      <type name="int"/>
+    </constant>
+    <constant name="braceleft" value="123">
+      <type name="int"/>
+    </constant>
+    <constant name="braceright" value="125">
+      <type name="int"/>
+    </constant>
+    <constant name="bracketleft" value="91">
+      <type name="int"/>
+    </constant>
+    <constant name="bracketright" value="93">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_blank" value="16787456">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_1" value="65521">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_10" value="65530">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_2" value="65522">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_3" value="65523">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_4" value="65524">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_5" value="65525">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_6" value="65526">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_7" value="65527">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_8" value="65528">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dot_9" value="65529">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1" value="16787457">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12" value="16787459">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123" value="16787463">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1234" value="16787471">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12345" value="16787487">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123456" value="16787519">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1234567" value="16787583">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12345678" value="16787711">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1234568" value="16787647">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123457" value="16787551">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1234578" value="16787679">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123458" value="16787615">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12346" value="16787503">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123467" value="16787567">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1234678" value="16787695">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123468" value="16787631">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12347" value="16787535">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123478" value="16787663">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12348" value="16787599">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1235" value="16787479">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12356" value="16787511">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123567" value="16787575">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1235678" value="16787703">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123568" value="16787639">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12357" value="16787543">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123578" value="16787671">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12358" value="16787607">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1236" value="16787495">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12367" value="16787559">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_123678" value="16787687">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12368" value="16787623">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1237" value="16787527">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12378" value="16787655">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1238" value="16787591">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_124" value="16787467">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1245" value="16787483">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12456" value="16787515">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_124567" value="16787579">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1245678" value="16787707">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_124568" value="16787643">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12457" value="16787547">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_124578" value="16787675">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12458" value="16787611">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1246" value="16787499">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12467" value="16787563">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_124678" value="16787691">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12468" value="16787627">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1247" value="16787531">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12478" value="16787659">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1248" value="16787595">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_125" value="16787475">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1256" value="16787507">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12567" value="16787571">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_125678" value="16787699">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12568" value="16787635">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1257" value="16787539">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12578" value="16787667">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1258" value="16787603">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_126" value="16787491">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1267" value="16787555">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_12678" value="16787683">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1268" value="16787619">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_127" value="16787523">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1278" value="16787651">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_128" value="16787587">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13" value="16787461">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_134" value="16787469">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1345" value="16787485">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13456" value="16787517">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_134567" value="16787581">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1345678" value="16787709">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_134568" value="16787645">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13457" value="16787549">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_134578" value="16787677">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13458" value="16787613">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1346" value="16787501">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13467" value="16787565">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_134678" value="16787693">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13468" value="16787629">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1347" value="16787533">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13478" value="16787661">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1348" value="16787597">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_135" value="16787477">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1356" value="16787509">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13567" value="16787573">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_135678" value="16787701">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13568" value="16787637">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1357" value="16787541">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13578" value="16787669">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1358" value="16787605">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_136" value="16787493">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1367" value="16787557">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_13678" value="16787685">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1368" value="16787621">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_137" value="16787525">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1378" value="16787653">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_138" value="16787589">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_14" value="16787465">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_145" value="16787481">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1456" value="16787513">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_14567" value="16787577">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_145678" value="16787705">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_14568" value="16787641">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1457" value="16787545">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_14578" value="16787673">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1458" value="16787609">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_146" value="16787497">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1467" value="16787561">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_14678" value="16787689">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1468" value="16787625">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_147" value="16787529">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1478" value="16787657">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_148" value="16787593">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_15" value="16787473">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_156" value="16787505">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1567" value="16787569">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_15678" value="16787697">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1568" value="16787633">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_157" value="16787537">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1578" value="16787665">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_158" value="16787601">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_16" value="16787489">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_167" value="16787553">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_1678" value="16787681">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_168" value="16787617">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_17" value="16787521">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_178" value="16787649">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_18" value="16787585">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2" value="16787458">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23" value="16787462">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_234" value="16787470">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2345" value="16787486">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23456" value="16787518">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_234567" value="16787582">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2345678" value="16787710">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_234568" value="16787646">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23457" value="16787550">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_234578" value="16787678">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23458" value="16787614">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2346" value="16787502">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23467" value="16787566">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_234678" value="16787694">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23468" value="16787630">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2347" value="16787534">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23478" value="16787662">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2348" value="16787598">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_235" value="16787478">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2356" value="16787510">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23567" value="16787574">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_235678" value="16787702">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23568" value="16787638">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2357" value="16787542">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23578" value="16787670">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2358" value="16787606">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_236" value="16787494">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2367" value="16787558">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_23678" value="16787686">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2368" value="16787622">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_237" value="16787526">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2378" value="16787654">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_238" value="16787590">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_24" value="16787466">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_245" value="16787482">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2456" value="16787514">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_24567" value="16787578">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_245678" value="16787706">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_24568" value="16787642">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2457" value="16787546">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_24578" value="16787674">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2458" value="16787610">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_246" value="16787498">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2467" value="16787562">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_24678" value="16787690">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2468" value="16787626">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_247" value="16787530">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2478" value="16787658">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_248" value="16787594">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_25" value="16787474">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_256" value="16787506">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2567" value="16787570">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_25678" value="16787698">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2568" value="16787634">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_257" value="16787538">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2578" value="16787666">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_258" value="16787602">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_26" value="16787490">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_267" value="16787554">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_2678" value="16787682">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_268" value="16787618">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_27" value="16787522">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_278" value="16787650">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_28" value="16787586">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3" value="16787460">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_34" value="16787468">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_345" value="16787484">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3456" value="16787516">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_34567" value="16787580">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_345678" value="16787708">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_34568" value="16787644">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3457" value="16787548">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_34578" value="16787676">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3458" value="16787612">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_346" value="16787500">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3467" value="16787564">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_34678" value="16787692">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3468" value="16787628">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_347" value="16787532">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3478" value="16787660">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_348" value="16787596">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_35" value="16787476">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_356" value="16787508">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3567" value="16787572">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_35678" value="16787700">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3568" value="16787636">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_357" value="16787540">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3578" value="16787668">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_358" value="16787604">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_36" value="16787492">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_367" value="16787556">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_3678" value="16787684">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_368" value="16787620">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_37" value="16787524">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_378" value="16787652">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_38" value="16787588">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_4" value="16787464">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_45" value="16787480">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_456" value="16787512">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_4567" value="16787576">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_45678" value="16787704">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_4568" value="16787640">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_457" value="16787544">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_4578" value="16787672">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_458" value="16787608">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_46" value="16787496">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_467" value="16787560">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_4678" value="16787688">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_468" value="16787624">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_47" value="16787528">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_478" value="16787656">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_48" value="16787592">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_5" value="16787472">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_56" value="16787504">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_567" value="16787568">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_5678" value="16787696">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_568" value="16787632">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_57" value="16787536">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_578" value="16787664">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_58" value="16787600">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_6" value="16787488">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_67" value="16787552">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_678" value="16787680">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_68" value="16787616">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_7" value="16787520">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_78" value="16787648">
+      <type name="int"/>
+    </constant>
+    <constant name="braille_dots_8" value="16787584">
+      <type name="int"/>
+    </constant>
+    <constant name="breve" value="418">
+      <type name="int"/>
+    </constant>
+    <constant name="brokenbar" value="166">
+      <type name="int"/>
+    </constant>
+    <constant name="c" value="99">
+      <type name="int"/>
+    </constant>
+    <constant name="cabovedot" value="741">
+      <type name="int"/>
+    </constant>
+    <constant name="cacute" value="486">
+      <type name="int"/>
+    </constant>
+    <function name="cairo_create"
+              c:identifier="gdk_cairo_create"
+              doc="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."
+              version="2.8">
+      <return-value transfer-ownership="full">
+        <type name="cairo.Context" c:type="cairo_t*"/>
+      </return-value>
+      <parameters>
+        <parameter name="drawable" transfer-ownership="none">
+          <type name="Drawable" c:type="GdkDrawable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cairo_rectangle"
+              c:identifier="gdk_cairo_rectangle"
+              doc="Adds the given rectangle to the current path of @cr."
+              version="2.8">
+      <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="rectangle" transfer-ownership="none">
+          <type name="Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cairo_region"
+              c:identifier="gdk_cairo_region"
+              doc="Adds the given region to the current path of @cr."
+              version="2.8">
+      <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="region" transfer-ownership="none">
+          <type name="Region" c:type="GdkRegion*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cairo_reset_clip"
+              c:identifier="gdk_cairo_reset_clip"
+              doc="Resets the clip region for a Cairo context created by gdk_cairo_create().
+This resets the clip region to the &quot;empty&quot; 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."
+              version="2.18">
+      <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="drawable" transfer-ownership="none">
+          <type name="Drawable" c:type="GdkDrawable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cairo_set_source_color"
+              c:identifier="gdk_cairo_set_source_color"
+              doc="Sets the specified #GdkColor as the source color of @cr."
+              version="2.8">
+      <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="color" transfer-ownership="none">
+          <type name="Color" c:type="GdkColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cairo_set_source_pixbuf"
+              c:identifier="gdk_cairo_set_source_pixbuf"
+              doc="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"
+              version="2.8">
+      <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="pixbuf" transfer-ownership="none">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="pixbuf_x" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+        <parameter name="pixbuf_y" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cairo_set_source_pixmap"
+              c:identifier="gdk_cairo_set_source_pixmap"
+              doc="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"
+              version="2.10">
+      <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="pixmap" transfer-ownership="none">
+          <type name="Pixmap" c:type="GdkPixmap*"/>
+        </parameter>
+        <parameter name="pixmap_x" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+        <parameter name="pixmap_y" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="careof" value="2744">
+      <type name="int"/>
+    </constant>
+    <constant name="caret" value="2812">
+      <type name="int"/>
+    </constant>
+    <constant name="caron" value="439">
+      <type name="int"/>
+    </constant>
+    <constant name="ccaron" value="488">
+      <type name="int"/>
+    </constant>
+    <constant name="ccedilla" value="231">
+      <type name="int"/>
+    </constant>
+    <constant name="ccircumflex" value="742">
+      <type name="int"/>
+    </constant>
+    <constant name="cedilla" value="184">
+      <type name="int"/>
+    </constant>
+    <constant name="cent" value="162">
+      <type name="int"/>
+    </constant>
+    <function name="char_height"
+              c:identifier="gdk_char_height"
+              doc="Determines the total height of a given character.
+This value is not generally useful, because you cannot
+determine how this total height will be drawn in
+relation to the baseline. See gdk_text_extents()."
+              deprecated="Use gdk_text_extents() instead."
+              deprecated-version="2.2">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="Font" c:type="GdkFont*"/>
+        </parameter>
+        <parameter name="character" transfer-ownership="none">
+          <type name="int8" c:type="gchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="char_measure"
+              c:identifier="gdk_char_measure"
+              doc="Determines the distance from the origin to the rightmost
+portion of a character when drawn. This is not the
+correct value for determining the origin of the next
+portion when drawing text in multiple pieces.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="Font" c:type="GdkFont*"/>
+        </parameter>
+        <parameter name="character" transfer-ownership="none">
+          <type name="int8" c:type="gchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="char_width"
+              c:identifier="gdk_char_width"
+              doc="Determines the width of a given character."
+              deprecated="Use gdk_text_extents() instead."
+              deprecated-version="2.2">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="Font" c:type="GdkFont*"/>
+        </parameter>
+        <parameter name="character" transfer-ownership="none">
+          <type name="int8" c:type="gchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="char_width_wc"
+              c:identifier="gdk_char_width_wc"
+              doc="Determines the width of a given wide character. (Encoded
+in the wide-character encoding of the current locale).">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="Font" c:type="GdkFont*"/>
+        </parameter>
+        <parameter name="character" transfer-ownership="none">
+          <type name="WChar" c:type="GdkWChar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="checkerboard" value="2529">
+      <type name="int"/>
+    </constant>
+    <constant name="checkmark" value="2803">
+      <type name="int"/>
+    </constant>
+    <constant name="circle" value="3023">
+      <type name="int"/>
+    </constant>
+    <constant name="club" value="2796">
+      <type name="int"/>
+    </constant>
+    <constant name="colon" value="58">
+      <type name="int"/>
+    </constant>
+    <function name="color_alloc"
+              c:identifier="gdk_color_alloc"
+              doc="&lt;structfield&gt;pixel&lt;/structfield&gt; field will be filled in.
+Allocates a single color from a colormap."
+              deprecated="Use gdk_colormap_alloc_color() instead."
+              deprecated-version="2.2">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="colormap" transfer-ownership="none">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Color" c:type="GdkColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="color_black"
+              c:identifier="gdk_color_black"
+              doc="Returns the black color for a given colormap. The resulting
+value has already been allocated.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="colormap" transfer-ownership="none">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Color" c:type="GdkColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="color_change"
+              c:identifier="gdk_color_change"
+              doc="in the &lt;structfield&gt;pixel&lt;/structfield&gt; field,
+and the new value in the remaining fields.
+Changes the value of a color that has already
+been allocated. If @colormap is not a private
+colormap, then the color must have been allocated
+using gdk_colormap_alloc_colors() with the">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="colormap" transfer-ownership="none">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Color" c:type="GdkColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="color_parse"
+              c:identifier="gdk_color_parse"
+              doc="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 &apos;&amp;num;rgb&apos; &apos;&amp;num;rrggbb&apos; &apos;&amp;num;rrrgggbbb&apos; or
+&apos;&amp;num;rrrrggggbbbb&apos; where &apos;r&apos;, &apos;g&apos; and &apos;b&apos; are hex digits of the
+red, green, and blue components of the color, respectively. (White
+in the four forms is &apos;&amp;num;fff&apos; &apos;&amp;num;ffffff&apos; &apos;&amp;num;fffffffff&apos; and
+&apos;&amp;num;ffffffffffff&apos;)">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="spec" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="color"
+                   direction="out"
+                   transfer-ownership="full"
+                   doc="the #GdkColor to fill in">
+          <type name="Color" c:type="GdkColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="color_white"
+              c:identifier="gdk_color_white"
+              doc="Returns the white color for a given colormap. The resulting
+value has already allocated been allocated.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="colormap" transfer-ownership="none">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Color" c:type="GdkColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="colors_alloc"
+              c:identifier="gdk_colors_alloc"
+              doc="in contiguous color cells.
+to indicate that the color allocation should not be planar.)
+Allocates colors from a colormap. This function
+is obsolete. See gdk_colormap_alloc_colors().
+For full documentation of the fields, see
+the Xlib documentation for &lt;function&gt;XAllocColorCells()&lt;/function&gt;.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="colormap" transfer-ownership="none">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="contiguous" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="planes" direction="out" transfer-ownership="full">
+          <type name="ulong" c:type="gulong*"/>
+        </parameter>
+        <parameter name="nplanes" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="pixels" direction="out" transfer-ownership="full">
+          <type name="ulong" c:type="gulong*"/>
+        </parameter>
+        <parameter name="npixels" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="colors_free"
+              c:identifier="gdk_colors_free"
+              doc="Frees colors allocated with gdk_colors_alloc(). This
+function is obsolete. See gdk_colormap_free_colors().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="colormap" transfer-ownership="none">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="pixels" direction="out" transfer-ownership="full">
+          <type name="ulong" c:type="gulong*"/>
+        </parameter>
+        <parameter name="npixels" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="planes" transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="colors_store"
+              c:identifier="gdk_colors_store"
+              doc="Changes the value of the first @ncolors colors in
+a private colormap. This function is obsolete and
+should not be used. See gdk_color_change().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="colormap" transfer-ownership="none">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="colors" transfer-ownership="none">
+          <type name="Color" c:type="GdkColor*"/>
+        </parameter>
+        <parameter name="ncolors" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="comma" value="44">
+      <type name="int"/>
+    </constant>
+    <constant name="containsas" value="16785931">
+      <type name="int"/>
+    </constant>
+    <constant name="copyright" value="169">
+      <type name="int"/>
+    </constant>
+    <constant name="cr" value="2532">
+      <type name="int"/>
+    </constant>
+    <constant name="crossinglines" value="2542">
+      <type name="int"/>
+    </constant>
+    <constant name="cuberoot" value="16785947">
+      <type name="int"/>
+    </constant>
+    <constant name="currency" value="164">
+      <type name="int"/>
+    </constant>
+    <constant name="cursor" value="2815">
+      <type name="int"/>
+    </constant>
+    <constant name="d" value="100">
+      <type name="int"/>
+    </constant>
+    <constant name="dabovedot" value="16784907">
+      <type name="int"/>
+    </constant>
+    <constant name="dagger" value="2801">
+      <type name="int"/>
+    </constant>
+    <constant name="dcaron" value="495">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_A" value="65153">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_E" value="65155">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_I" value="65157">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_O" value="65159">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_U" value="65161">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_a" value="65152">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_abovecomma" value="65124">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_abovedot" value="65110">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_abovereversedcomma" value="65125">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_abovering" value="65112">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_acute" value="65105">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowbreve" value="65131">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowcircumflex" value="65129">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowcomma" value="65134">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowdiaeresis" value="65132">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowdot" value="65120">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowmacron" value="65128">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowring" value="65127">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_belowtilde" value="65130">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_breve" value="65109">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_capital_schwa" value="65163">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_caron" value="65114">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_cedilla" value="65115">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_circumflex" value="65106">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_currency" value="65135">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_dasia" value="65125">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_diaeresis" value="65111">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_doubleacute" value="65113">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_doublegrave" value="65126">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_e" value="65154">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_grave" value="65104">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_hook" value="65121">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_horn" value="65122">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_i" value="65156">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_invertedbreve" value="65133">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_iota" value="65117">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_macron" value="65108">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_o" value="65158">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_ogonek" value="65116">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_perispomeni" value="65107">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_psili" value="65124">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_semivoiced_sound" value="65119">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_small_schwa" value="65162">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_stroke" value="65123">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_tilde" value="65107">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_u" value="65160">
+      <type name="int"/>
+    </constant>
+    <constant name="dead_voiced_sound" value="65118">
+      <type name="int"/>
+    </constant>
+    <constant name="decimalpoint" value="2749">
+      <type name="int"/>
+    </constant>
+    <constant name="degree" value="176">
+      <type name="int"/>
+    </constant>
+    <function name="devices_list"
+              c:identifier="gdk_devices_list"
+              doc="Returns the list of available input devices for the default display.
+The list is statically allocated and should not be freed.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+    </function>
+    <constant name="diaeresis" value="168">
+      <type name="int"/>
+    </constant>
+    <constant name="diamond" value="2797">
+      <type name="int"/>
+    </constant>
+    <constant name="digitspace" value="2725">
+      <type name="int"/>
+    </constant>
+    <constant name="dintegral" value="16785964">
+      <type name="int"/>
+    </constant>
+    <constant name="division" value="247">
+      <type name="int"/>
+    </constant>
+    <constant name="dollar" value="36">
+      <type name="int"/>
+    </constant>
+    <constant name="doubbaselinedot" value="2735">
+      <type name="int"/>
+    </constant>
+    <constant name="doubleacute" value="445">
+      <type name="int"/>
+    </constant>
+    <constant name="doubledagger" value="2802">
+      <type name="int"/>
+    </constant>
+    <constant name="doublelowquotemark" value="2814">
+      <type name="int"/>
+    </constant>
+    <constant name="downarrow" value="2302">
+      <type name="int"/>
+    </constant>
+    <constant name="downcaret" value="2984">
+      <type name="int"/>
+    </constant>
+    <constant name="downshoe" value="3030">
+      <type name="int"/>
+    </constant>
+    <constant name="downstile" value="3012">
+      <type name="int"/>
+    </constant>
+    <constant name="downtack" value="3010">
+      <type name="int"/>
+    </constant>
+    <function name="drag_abort"
+              c:identifier="gdk_drag_abort"
+              doc="Aborts a drag without dropping.
+This function is called by the drag source.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_begin"
+              c:identifier="gdk_drag_begin"
+              doc="Starts a drag and creates a new drag context for it.
+This function is called by the drag source.">
+      <return-value transfer-ownership="full">
+        <type name="DragContext" c:type="GdkDragContext*"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="targets" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_drop"
+              c:identifier="gdk_drag_drop"
+              doc="Drops on the current destination.
+This function is called by the drag source.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_drop_succeeded"
+              c:identifier="gdk_drag_drop_succeeded"
+              doc="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."
+              version="2.6">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_find_window"
+              c:identifier="gdk_drag_find_window"
+              doc="should be ignored, since it is put up by the drag source as an icon.
+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">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="drag_window" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="x_root" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="y_root" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="dest_window"
+                   direction="out"
+                   transfer-ownership="full"
+                   doc="location to store the destination window in.">
+          <type name="Window" c:type="GdkWindow**"/>
+        </parameter>
+        <parameter name="protocol"
+                   direction="out"
+                   transfer-ownership="full"
+                   doc="location to store the DND protocol in.">
+          <type name="DragProtocol" c:type="GdkDragProtocol*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_find_window_for_screen"
+              c:identifier="gdk_drag_find_window_for_screen"
+              doc="should be ignored, since it is put up by the drag source as an icon.
+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"
+              version="2.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="drag_window" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="screen" transfer-ownership="none">
+          <type name="Screen" c:type="GdkScreen*"/>
+        </parameter>
+        <parameter name="x_root" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="y_root" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="dest_window"
+                   direction="out"
+                   transfer-ownership="full"
+                   doc="location to store the destination window in.">
+          <type name="Window" c:type="GdkWindow**"/>
+        </parameter>
+        <parameter name="protocol"
+                   direction="out"
+                   transfer-ownership="full"
+                   doc="location to store the DND protocol in.">
+          <type name="DragProtocol" c:type="GdkDragProtocol*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_get_protocol"
+              c:identifier="gdk_drag_get_protocol"
+              doc="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&apos;t support Drag and Drop.">
+      <return-value transfer-ownership="full">
+        <type name="NativeWindow" c:type="GdkNativeWindow"/>
+      </return-value>
+      <parameters>
+        <parameter name="xid" transfer-ownership="none">
+          <type name="NativeWindow" c:type="GdkNativeWindow"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="DragProtocol" c:type="GdkDragProtocol*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_get_protocol_for_display"
+              c:identifier="gdk_drag_get_protocol_for_display"
+              doc="may be @xid or the id of a proxy window, or zero if @xid doesn&apos;t
+support Drag and Drop.
+Finds out the DND protocol supported by a window."
+              version="2.2">
+      <return-value transfer-ownership="full">
+        <type name="NativeWindow" c:type="GdkNativeWindow"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="xid" transfer-ownership="none">
+          <type name="NativeWindow" c:type="GdkNativeWindow"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="DragProtocol" c:type="GdkDragProtocol*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_get_selection"
+              c:identifier="gdk_drag_get_selection"
+              doc="Returns the selection atom for the current source window.">
+      <return-value transfer-ownership="full">
+        <type name="Atom" c:type="GdkAtom"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_motion"
+              c:identifier="gdk_drag_motion"
+              doc="gdk_drag_find_window().
+Updates the drag context when the pointer moves or the
+set of actions changes.
+This function is called by the drag source.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="dest_window" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="protocol" transfer-ownership="none">
+          <type name="DragProtocol" c:type="GdkDragProtocol"/>
+        </parameter>
+        <parameter name="x_root" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="y_root" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="suggested_action" transfer-ownership="none">
+          <type name="DragAction" c:type="GdkDragAction"/>
+        </parameter>
+        <parameter name="possible_actions" transfer-ownership="none">
+          <type name="DragAction" c:type="GdkDragAction"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_status"
+              c:identifier="gdk_drag_status"
+              doc="or 0 to indicate that a drop will not be accepted.
+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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="action" transfer-ownership="none">
+          <type name="DragAction" c:type="GdkDragAction"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_arc"
+              c:identifier="gdk_draw_arc"
+              doc="counter-clockwise, in 1/64ths of a degree.
+of a degree.
+Draws an arc or a filled &apos;pie slice&apos;. The arc is defined by the bounding
+rectangle of the entire ellipse, and the start and end angles of the part
+of the ellipse to be drawn.">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </parameter>
+        <parameter name="filled" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </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>
+        <parameter name="angle1" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="angle2" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_drawable"
+              c:identifier="gdk_draw_drawable"
+              doc="Copies the @width x @height region of @src at coordinates (@xsrc,
+Most fields in @gc are not used for this operation, but notably the
+clip mask or clip region will be honored.
+The source and destination drawables must have the same visual and
+colormap, or errors will result. (On X11, failure to match
+visual/colormap results in a BadMatch error from the X server.)
+A common cause of this problem is an attempt to draw a bitmap to
+a color drawable. The way to draw a bitmap is to set the bitmap as
+the stipple on the #GdkGC, set the fill mode to %GDK_STIPPLED, and
+then draw the rectangle.">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="Drawable" c:type="GdkDrawable*"/>
+        </parameter>
+        <parameter name="xsrc" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="ysrc" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="xdest" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="ydest" 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>
+    </function>
+    <function name="draw_glyphs"
+              c:identifier="gdk_draw_glyphs"
+              doc="This is a low-level function; 99% of text rendering should be done
+using gdk_draw_layout() instead.
+A glyph is a single image in a font. This function draws a sequence of
+glyphs.  To obtain a sequence of glyphs you have to understand a
+lot about internationalized text handling, which you don&apos;t want to
+understand; thus, use gdk_draw_layout() instead of this function,
+gdk_draw_layout() handles the details.">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </parameter>
+        <parameter name="font" transfer-ownership="none">
+          <type name="Pango.Font" c:type="PangoFont*"/>
+        </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="glyphs" transfer-ownership="none">
+          <type name="Pango.GlyphString" c:type="PangoGlyphString*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_glyphs_transformed"
+              c:identifier="gdk_draw_glyphs_transformed"
+              doc="units in user space coordinates)
+in user space coordinates)
+Renders a #PangoGlyphString onto a drawable, possibly
+transforming the layed-out coordinates through a transformation
+matrix. Note that the transformation matrix for @font is not
+changed, so to produce correct rendering results, the @font
+must have been loaded using a #PangoContext with an identical
+transformation matrix to that passed in to this function.
+See also gdk_draw_glyphs(), gdk_draw_layout()."
+              version="2.6">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </parameter>
+        <parameter name="matrix"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a #PangoMatrix, or %NULL to use an identity transformation">
+          <type name="Pango.Matrix" c:type="PangoMatrix*"/>
+        </parameter>
+        <parameter name="font" transfer-ownership="none">
+          <type name="Pango.Font" c:type="PangoFont*"/>
+        </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="glyphs" transfer-ownership="none">
+          <type name="Pango.GlyphString" c:type="PangoGlyphString*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_gray_image" c:identifier="gdk_draw_gray_image">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </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>
+        <parameter name="dith" transfer-ownership="none">
+          <type name="RgbDither" c:type="GdkRgbDither"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="rowstride" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_image"
+              c:identifier="gdk_draw_image"
+              doc="extend to the right edge of @image.
+extend to the bottom edge of @image.
+Draws a #GdkImage onto a drawable.
+The depth of the #GdkImage must match the depth of the #GdkDrawable.">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </parameter>
+        <parameter name="image" transfer-ownership="none">
+          <type name="Image" c:type="GdkImage*"/>
+        </parameter>
+        <parameter name="xsrc" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="ysrc" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="xdest" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="ydest" 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>
+    </function>
+    <function name="draw_indexed_image" c:identifier="gdk_draw_indexed_image">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </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>
+        <parameter name="dith" transfer-ownership="none">
+          <type name="RgbDither" c:type="GdkRgbDither"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="rowstride" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="cmap" transfer-ownership="none">
+          <type name="RgbCmap" c:type="GdkRgbCmap*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_layout"
+              c:identifier="gdk_draw_layout"
+              doc="Render a #PangoLayout onto a GDK drawable
+If the layout&apos;s #PangoContext has a transformation matrix set, then
+bounding box (in device space) of the transformed layout.
+If you&apos;re using GTK+, the usual way to obtain a #PangoLayout
+is gtk_widget_create_pango_layout().">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </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="layout" transfer-ownership="none">
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_layout_line"
+              c:identifier="gdk_draw_layout_line"
+              doc="Render a #PangoLayoutLine onto an GDK drawable
+If the layout&apos;s #PangoContext has a transformation matrix set, then
+(left is in before-tranform user coordinates) in after-transform
+device coordinates.">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </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="line" transfer-ownership="none">
+          <type name="Pango.LayoutLine" c:type="PangoLayoutLine*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_layout_line_with_colors"
+              c:identifier="gdk_draw_layout_line_with_colors"
+              doc="Render a #PangoLayoutLine onto a #GdkDrawable, overriding the
+layout&apos;s normal colors with @foreground and/or @background.
+If the layout&apos;s #PangoContext has a transformation matrix set, then
+(left is in before-tranform user coordinates) in after-transform
+device coordinates.">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </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="line" transfer-ownership="none">
+          <type name="Pango.LayoutLine" c:type="PangoLayoutLine*"/>
+        </parameter>
+        <parameter name="foreground"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="foreground override color, or %NULL for none">
+          <type name="Color" c:type="GdkColor*"/>
+        </parameter>
+        <parameter name="background"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="background override color, or %NULL for none">
+          <type name="Color" c:type="GdkColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_layout_with_colors"
+              c:identifier="gdk_draw_layout_with_colors"
+              doc="Render a #PangoLayout onto a #GdkDrawable, overriding the
+layout&apos;s normal colors with @foreground and/or @background.
+If the layout&apos;s #PangoContext has a transformation matrix set, then
+bounding box (in device space) of the transformed layout.
+If you&apos;re using GTK+, the ususal way to obtain a #PangoLayout
+is gtk_widget_create_pango_layout().">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </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="layout" transfer-ownership="none">
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </parameter>
+        <parameter name="foreground"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="foreground override color, or %NULL for none">
+          <type name="Color" c:type="GdkColor*"/>
+        </parameter>
+        <parameter name="background"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="background override color, or %NULL for none">
+          <type name="Color" c:type="GdkColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_line"
+              c:identifier="gdk_draw_line"
+              doc="Draws a line, using the foreground color and other attributes of
+the #GdkGC.">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </parameter>
+        <parameter name="x1_" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="y1_" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="x2_" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="y2_" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_lines"
+              c:identifier="gdk_draw_lines"
+              doc="Draws a series of lines connecting the given points.
+The way in which joins between lines are draw is determined by the
+#GdkCapStyle value in the #GdkGC. This can be set with
+gdk_gc_set_line_attributes().">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </parameter>
+        <parameter name="points" transfer-ownership="none">
+          <type name="Point" c:type="GdkPoint*"/>
+        </parameter>
+        <parameter name="n_points" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_pixbuf"
+              c:identifier="gdk_draw_pixbuf"
+              doc="Renders a rectangular portion of a pixbuf to a drawable.  The destination
+drawable must have a colormap. All windows have a colormap, however, pixmaps
+only have colormap by default if they were created with a non-%NULL window
+argument. Otherwise a colormap must be set on them with
+gdk_drawable_set_colormap().
+On older X servers, rendering pixbufs with an alpha channel involves round
+trips to the X server, and may be somewhat slow.
+If GDK is built with the Sun mediaLib library, the gdk_draw_pixbuf
+function is accelerated using mediaLib, which provides hardware
+acceleration on Intel, AMD, and Sparc chipsets.  If desired, mediaLib
+support can be turned off by setting the GDK_DISABLE_MEDIALIB environment
+variable."
+              version="2.2">
+      <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="gc"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a #GdkGC, used for clipping, or %NULL">
+          <type name="GC" c:type="GdkGC*"/>
+        </parameter>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="src_x" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="src_y" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="dest_x" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="dest_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>
+        <parameter name="dither" transfer-ownership="none">
+          <type name="RgbDither" c:type="GdkRgbDither"/>
+        </parameter>
+        <parameter name="x_dither" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="y_dither" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_point"
+              c:identifier="gdk_draw_point"
+              doc="Draws a point, using the foreground color and other attributes of
+the #GdkGC.">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </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>
+      </parameters>
+    </function>
+    <function name="draw_points"
+              c:identifier="gdk_draw_points"
+              doc="Draws a number of points, using the foreground color and other
+attributes of the #GdkGC.">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </parameter>
+        <parameter name="points" transfer-ownership="none">
+          <type name="Point" c:type="GdkPoint*"/>
+        </parameter>
+        <parameter name="n_points" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_polygon"
+              c:identifier="gdk_draw_polygon"
+              doc="automatically, connecting the last point to the first point if
+necessary.
+up the polygon.
+Draws an outlined or filled polygon.">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </parameter>
+        <parameter name="filled" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="points" transfer-ownership="none">
+          <type name="Point" c:type="GdkPoint*"/>
+        </parameter>
+        <parameter name="n_points" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_rectangle"
+              c:identifier="gdk_draw_rectangle"
+              doc="Draws a rectangular outline or filled rectangle, using the foreground color
+and other attributes of the #GdkGC.
+A rectangle drawn filled is 1 pixel smaller in both dimensions than a
+rectangle outlined. Calling
+&lt;literal&gt;gdk_draw_rectangle (window, gc, TRUE, 0, 0, 20, 20)&lt;/literal&gt;
+results in a filled rectangle 20 pixels wide and 20 pixels high. Calling
+&lt;literal&gt;gdk_draw_rectangle (window, gc, FALSE, 0, 0, 20, 20)&lt;/literal&gt;
+results in an outlined rectangle with corners at (0, 0), (0, 20), (20, 20),
+and (20, 0), which makes it 21 pixels wide and 21 pixels high.">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </parameter>
+        <parameter name="filled" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </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>
+    </function>
+    <function name="draw_rgb_32_image" c:identifier="gdk_draw_rgb_32_image">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </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>
+        <parameter name="dith" transfer-ownership="none">
+          <type name="RgbDither" c:type="GdkRgbDither"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="rowstride" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_rgb_32_image_dithalign"
+              c:identifier="gdk_draw_rgb_32_image_dithalign"
+              doc="Like gdk_draw_rgb_32_image(), but allows you to specify the dither
+offsets. See gdk_draw_rgb_image_dithalign() for more details.">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </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>
+        <parameter name="dith" transfer-ownership="none">
+          <type name="RgbDither" c:type="GdkRgbDither"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="rowstride" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="xdith" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="ydith" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_rgb_image" c:identifier="gdk_draw_rgb_image">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </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>
+        <parameter name="dith" transfer-ownership="none">
+          <type name="RgbDither" c:type="GdkRgbDither"/>
+        </parameter>
+        <parameter name="rgb_buf" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="rowstride" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_rgb_image_dithalign"
+              c:identifier="gdk_draw_rgb_image_dithalign">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </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>
+        <parameter name="dith" transfer-ownership="none">
+          <type name="RgbDither" c:type="GdkRgbDither"/>
+        </parameter>
+        <parameter name="rgb_buf" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="rowstride" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="xdith" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="ydith" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_segments"
+              c:identifier="gdk_draw_segments"
+              doc="end points of the lines to be drawn.
+Draws a number of unconnected lines.">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </parameter>
+        <parameter name="segs" transfer-ownership="none">
+          <type name="Segment" c:type="GdkSegment*"/>
+        </parameter>
+        <parameter name="n_segs" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_string"
+              c:identifier="gdk_draw_string"
+              doc="Draws a string of characters in the given font or fontset."
+              deprecated="Use gdk_draw_layout() instead."
+              deprecated-version="2.4">
+      <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="font" transfer-ownership="none">
+          <type name="Font" c:type="GdkFont*"/>
+        </parameter>
+        <parameter name="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </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="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_text"
+              c:identifier="gdk_draw_text"
+              doc="Draws a number of characters in the given font or fontset."
+              deprecated="Use gdk_draw_layout() instead."
+              deprecated-version="2.4">
+      <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="font" transfer-ownership="none">
+          <type name="Font" c:type="GdkFont*"/>
+        </parameter>
+        <parameter name="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </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="text" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="text_length" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_text_wc"
+              c:identifier="gdk_draw_text_wc"
+              doc="Draws a number of wide characters using the given font of fontset.
+If the font is a 1-byte font, the string is converted into 1-byte
+characters (discarding the high bytes) before output."
+              deprecated="Use gdk_draw_layout() instead."
+              deprecated-version="2.4">
+      <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="font" transfer-ownership="none">
+          <type name="Font" c:type="GdkFont*"/>
+        </parameter>
+        <parameter name="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </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="text" transfer-ownership="none">
+          <type name="WChar" c:type="GdkWChar*"/>
+        </parameter>
+        <parameter name="text_length" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_trapezoids"
+              c:identifier="gdk_draw_trapezoids"
+              doc="Draws a set of anti-aliased trapezoids. The trapezoids are
+combined using saturation addition, then drawn over the background
+as a set. This is low level functionality used internally to implement
+rotated underlines and backgrouds when rendering a PangoLayout and is
+likely not useful for applications."
+              version="2.6">
+      <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="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </parameter>
+        <parameter name="trapezoids" transfer-ownership="none">
+          <type name="Trapezoid" c:type="GdkTrapezoid*"/>
+        </parameter>
+        <parameter name="n_trapezoids" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drop_finish"
+              c:identifier="gdk_drop_finish"
+              doc="Ends the drag operation after a drop.
+This function is called by the drag destination.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="success" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drop_reply"
+              c:identifier="gdk_drop_reply"
+              doc="Accepts or rejects a drop.
+This function is called by the drag destination in response
+to a drop initiated by the drag source.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="DragContext" c:type="GdkDragContext*"/>
+        </parameter>
+        <parameter name="ok" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="dstroke" value="496">
+      <type name="int"/>
+    </constant>
+    <constant name="e" value="101">
+      <type name="int"/>
+    </constant>
+    <constant name="eabovedot" value="1004">
+      <type name="int"/>
+    </constant>
+    <constant name="eacute" value="233">
+      <type name="int"/>
+    </constant>
+    <constant name="ebelowdot" value="16785081">
+      <type name="int"/>
+    </constant>
+    <constant name="ecaron" value="492">
+      <type name="int"/>
+    </constant>
+    <constant name="ecircumflex" value="234">
+      <type name="int"/>
+    </constant>
+    <constant name="ecircumflexacute" value="16785087">
+      <type name="int"/>
+    </constant>
+    <constant name="ecircumflexbelowdot" value="16785095">
+      <type name="int"/>
+    </constant>
+    <constant name="ecircumflexgrave" value="16785089">
+      <type name="int"/>
+    </constant>
+    <constant name="ecircumflexhook" value="16785091">
+      <type name="int"/>
+    </constant>
+    <constant name="ecircumflextilde" value="16785093">
+      <type name="int"/>
+    </constant>
+    <constant name="ediaeresis" value="235">
+      <type name="int"/>
+    </constant>
+    <constant name="egrave" value="232">
+      <type name="int"/>
+    </constant>
+    <constant name="ehook" value="16785083">
+      <type name="int"/>
+    </constant>
+    <constant name="eightsubscript" value="16785544">
+      <type name="int"/>
+    </constant>
+    <constant name="eightsuperior" value="16785528">
+      <type name="int"/>
+    </constant>
+    <constant name="elementof" value="16785928">
+      <type name="int"/>
+    </constant>
+    <constant name="ellipsis" value="2734">
+      <type name="int"/>
+    </constant>
+    <constant name="em3space" value="2723">
+      <type name="int"/>
+    </constant>
+    <constant name="em4space" value="2724">
+      <type name="int"/>
+    </constant>
+    <constant name="emacron" value="954">
+      <type name="int"/>
+    </constant>
+    <constant name="emdash" value="2729">
+      <type name="int"/>
+    </constant>
+    <constant name="emfilledcircle" value="2782">
+      <type name="int"/>
+    </constant>
+    <constant name="emfilledrect" value="2783">
+      <type name="int"/>
+    </constant>
+    <constant name="emopencircle" value="2766">
+      <type name="int"/>
+    </constant>
+    <constant name="emopenrectangle" value="2767">
+      <type name="int"/>
+    </constant>
+    <constant name="emptyset" value="16785925">
+      <type name="int"/>
+    </constant>
+    <constant name="emspace" value="2721">
+      <type name="int"/>
+    </constant>
+    <constant name="endash" value="2730">
+      <type name="int"/>
+    </constant>
+    <constant name="enfilledcircbullet" value="2790">
+      <type name="int"/>
+    </constant>
+    <constant name="enfilledsqbullet" value="2791">
+      <type name="int"/>
+    </constant>
+    <constant name="eng" value="959">
+      <type name="int"/>
+    </constant>
+    <constant name="enopencircbullet" value="2784">
+      <type name="int"/>
+    </constant>
+    <constant name="enopensquarebullet" value="2785">
+      <type name="int"/>
+    </constant>
+    <constant name="enspace" value="2722">
+      <type name="int"/>
+    </constant>
+    <constant name="eogonek" value="490">
+      <type name="int"/>
+    </constant>
+    <constant name="equal" value="61">
+      <type name="int"/>
+    </constant>
+    <function name="error_trap_pop" c:identifier="gdk_error_trap_pop">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+    </function>
+    <function name="error_trap_push" c:identifier="gdk_error_trap_push">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <constant name="eth" value="240">
+      <type name="int"/>
+    </constant>
+    <constant name="etilde" value="16785085">
+      <type name="int"/>
+    </constant>
+    <function name="event_get"
+              c:identifier="gdk_event_get"
+              doc="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().">
+      <return-value transfer-ownership="full">
+        <type name="Event" c:type="GdkEvent*"/>
+      </return-value>
+    </function>
+    <function name="event_get_graphics_expose"
+              c:identifier="gdk_event_get_graphics_expose"
+              doc="Waits for a GraphicsExpose or NoExpose event from the X server.
+This is used in the #GtkText and #GtkCList widgets in GTK+ to make sure any
+GraphicsExpose events are handled before the widget is scrolled.
+NoExpose event was received."
+              deprecated="2.18:">
+      <return-value transfer-ownership="full">
+        <type name="Event" c:type="GdkEvent*"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="event_handler_set"
+              c:identifier="gdk_event_handler_set"
+              doc="gdk_event_handler_set() is called with another event handler.
+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+.)">
+      <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="EventFunc" c:type="GdkEventFunc"/>
+        </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>
+    </function>
+    <function name="event_peek"
+              c:identifier="gdk_event_peek"
+              doc="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().">
+      <return-value transfer-ownership="full">
+        <type name="Event" c:type="GdkEvent*"/>
+      </return-value>
+    </function>
+    <function name="event_request_motions"
+              c:identifier="gdk_event_request_motions"
+              doc="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;/
+}
+]|"
+              version="2.12">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <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"
+              doc="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."
+              version="2.2">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Event" c:type="GdkEvent*"/>
+        </parameter>
+        <parameter name="winid" transfer-ownership="none">
+          <type name="NativeWindow" c:type="GdkNativeWindow"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="events_pending"
+              c:identifier="gdk_events_pending"
+              doc="Checks if any events are ready to be processed for any display.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <constant name="exclam" value="33">
+      <type name="int"/>
+    </constant>
+    <constant name="exclamdown" value="161">
+      <type name="int"/>
+    </constant>
+    <function name="exit" c:identifier="gdk_exit">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="error_code" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="f" value="102">
+      <type name="int"/>
+    </constant>
+    <constant name="fabovedot" value="16784927">
+      <type name="int"/>
+    </constant>
+    <constant name="femalesymbol" value="2808">
+      <type name="int"/>
+    </constant>
+    <constant name="ff" value="2531">
+      <type name="int"/>
+    </constant>
+    <constant name="figdash" value="2747">
+      <type name="int"/>
+    </constant>
+    <constant name="filledlefttribullet" value="2780">
+      <type name="int"/>
+    </constant>
+    <constant name="filledrectbullet" value="2779">
+      <type name="int"/>
+    </constant>
+    <constant name="filledrighttribullet" value="2781">
+      <type name="int"/>
+    </constant>
+    <constant name="filledtribulletdown" value="2793">
+      <type name="int"/>
+    </constant>
+    <constant name="filledtribulletup" value="2792">
+      <type name="int"/>
+    </constant>
+    <constant name="fiveeighths" value="2757">
+      <type name="int"/>
+    </constant>
+    <constant name="fivesixths" value="2743">
+      <type name="int"/>
+    </constant>
+    <constant name="fivesubscript" value="16785541">
+      <type name="int"/>
+    </constant>
+    <constant name="fivesuperior" value="16785525">
+      <type name="int"/>
+    </constant>
+    <function name="flush" c:identifier="gdk_flush">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="font_from_description"
+              c:identifier="gdk_font_from_description"
+              doc="Load a #GdkFont based on a Pango font description. This font will
+only be an approximation of the Pango font, and
+internationalization will not be handled correctly. This function
+should only be used for legacy code that cannot be easily converted
+to use Pango. Using Pango directly will produce better results.
+cannot be loaded.">
+      <return-value transfer-ownership="full">
+        <type name="Font" c:type="GdkFont*"/>
+      </return-value>
+      <parameters>
+        <parameter name="font_desc" transfer-ownership="none">
+          <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_from_description_for_display"
+              c:identifier="gdk_font_from_description_for_display"
+              doc="Loads a #GdkFont based on a Pango font description for use on @display.
+This font will only be an approximation of the Pango font, and
+internationalization will not be handled correctly. This function
+should only be used for legacy code that cannot be easily converted
+to use Pango. Using Pango directly will produce better results.
+cannot be loaded."
+              version="2.2">
+      <return-value transfer-ownership="full">
+        <type name="Font" c:type="GdkFont*"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="font_desc" transfer-ownership="none">
+          <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_load"
+              c:identifier="gdk_font_load"
+              doc="Loads a font.
+The font may be newly loaded or looked up the font in a cache.
+You should make no assumptions about the initial reference count.">
+      <return-value transfer-ownership="full">
+        <type name="Font" c:type="GdkFont*"/>
+      </return-value>
+      <parameters>
+        <parameter name="font_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_load_for_display"
+              c:identifier="gdk_font_load_for_display"
+              doc="Loads a font for use on @display.
+The font may be newly loaded or looked up the font in a cache.
+You should make no assumptions about the initial reference count."
+              version="2.2">
+      <return-value transfer-ownership="full">
+        <type name="Font" c:type="GdkFont*"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="font_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fontset_load"
+              c:identifier="gdk_fontset_load"
+              doc="the component fonts of the fontset to load.
+Loads a fontset.
+The fontset may be newly loaded or looked up in a cache.
+You should make no assumptions about the initial reference count.">
+      <return-value transfer-ownership="full">
+        <type name="Font" c:type="GdkFont*"/>
+      </return-value>
+      <parameters>
+        <parameter name="fontset_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="fontset_load_for_display"
+              c:identifier="gdk_fontset_load_for_display"
+              doc="the component fonts of the fontset to load.
+Loads a fontset for use on @display.
+The fontset may be newly loaded or looked up in a cache.
+You should make no assumptions about the initial reference count."
+              version="2.2">
+      <return-value transfer-ownership="full">
+        <type name="Font" c:type="GdkFont*"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="fontset_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="fourfifths" value="2741">
+      <type name="int"/>
+    </constant>
+    <constant name="foursubscript" value="16785540">
+      <type name="int"/>
+    </constant>
+    <constant name="foursuperior" value="16785524">
+      <type name="int"/>
+    </constant>
+    <constant name="fourthroot" value="16785948">
+      <type name="int"/>
+    </constant>
+    <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">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="function" value="2294">
+      <type name="int"/>
+    </constant>
+    <constant name="g" value="103">
+      <type name="int"/>
+    </constant>
+    <constant name="gabovedot" value="757">
+      <type name="int"/>
+    </constant>
+    <constant name="gbreve" value="699">
+      <type name="int"/>
+    </constant>
+    <constant name="gcaron" value="16777703">
+      <type name="int"/>
+    </constant>
+    <constant name="gcedilla" value="955">
+      <type name="int"/>
+    </constant>
+    <constant name="gcircumflex" value="760">
+      <type name="int"/>
+    </constant>
+    <function name="get_default_root_window"
+              c:identifier="gdk_get_default_root_window"
+              doc="Obtains the root window (parent all other windows are inside)
+for the default display and screen.">
+      <return-value transfer-ownership="full">
+        <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="Gets whether event debugging output is enabled.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="get_use_xshm" c:identifier="gdk_get_use_xshm">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <constant name="grave" value="96">
+      <type name="int"/>
+    </constant>
+    <constant name="greater" value="62">
+      <type name="int"/>
+    </constant>
+    <constant name="greaterthanequal" value="2238">
+      <type name="int"/>
+    </constant>
+    <constant name="guillemotleft" value="171">
+      <type name="int"/>
+    </constant>
+    <constant name="guillemotright" value="187">
+      <type name="int"/>
+    </constant>
+    <constant name="h" value="104">
+      <type name="int"/>
+    </constant>
+    <constant name="hairspace" value="2728">
+      <type name="int"/>
+    </constant>
+    <constant name="hcircumflex" value="694">
+      <type name="int"/>
+    </constant>
+    <constant name="heart" value="2798">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_aleph" value="3296">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_ayin" value="3314">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_bet" value="3297">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_beth" value="3297">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_chet" value="3303">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_dalet" value="3299">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_daleth" value="3299">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_doublelowline" value="3295">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_finalkaph" value="3306">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_finalmem" value="3309">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_finalnun" value="3311">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_finalpe" value="3315">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_finalzade" value="3317">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_finalzadi" value="3317">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_gimel" value="3298">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_gimmel" value="3298">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_he" value="3300">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_het" value="3303">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_kaph" value="3307">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_kuf" value="3319">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_lamed" value="3308">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_mem" value="3310">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_nun" value="3312">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_pe" value="3316">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_qoph" value="3319">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_resh" value="3320">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_samech" value="3313">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_samekh" value="3313">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_shin" value="3321">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_taf" value="3322">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_taw" value="3322">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_tet" value="3304">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_teth" value="3304">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_waw" value="3301">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_yod" value="3305">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_zade" value="3318">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_zadi" value="3318">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_zain" value="3302">
+      <type name="int"/>
+    </constant>
+    <constant name="hebrew_zayin" value="3302">
+      <type name="int"/>
+    </constant>
+    <constant name="hexagram" value="2778">
+      <type name="int"/>
+    </constant>
+    <constant name="horizconnector" value="2211">
+      <type name="int"/>
+    </constant>
+    <constant name="horizlinescan1" value="2543">
+      <type name="int"/>
+    </constant>
+    <constant name="horizlinescan3" value="2544">
+      <type name="int"/>
+    </constant>
+    <constant name="horizlinescan5" value="2545">
+      <type name="int"/>
+    </constant>
+    <constant name="horizlinescan7" value="2546">
+      <type name="int"/>
+    </constant>
+    <constant name="horizlinescan9" value="2547">
+      <type name="int"/>
+    </constant>
+    <constant name="hstroke" value="689">
+      <type name="int"/>
+    </constant>
+    <constant name="ht" value="2530">
+      <type name="int"/>
+    </constant>
+    <constant name="hyphen" value="173">
+      <type name="int"/>
+    </constant>
+    <constant name="i" value="105">
+      <type name="int"/>
+    </constant>
+    <constant name="iTouch" value="269025120">
+      <type name="int"/>
+    </constant>
+    <constant name="iacute" value="237">
+      <type name="int"/>
+    </constant>
+    <constant name="ibelowdot" value="16785099">
+      <type name="int"/>
+    </constant>
+    <constant name="ibreve" value="16777517">
+      <type name="int"/>
+    </constant>
+    <constant name="icircumflex" value="238">
+      <type name="int"/>
+    </constant>
+    <constant name="identical" value="2255">
+      <type name="int"/>
+    </constant>
+    <constant name="idiaeresis" value="239">
+      <type name="int"/>
+    </constant>
+    <constant name="idotless" value="697">
+      <type name="int"/>
+    </constant>
+    <constant name="ifonlyif" value="2253">
+      <type name="int"/>
+    </constant>
+    <constant name="igrave" value="236">
+      <type name="int"/>
+    </constant>
+    <constant name="ihook" value="16785097">
+      <type name="int"/>
+    </constant>
+    <constant name="imacron" value="1007">
+      <type name="int"/>
+    </constant>
+    <constant name="implies" value="2254">
+      <type name="int"/>
+    </constant>
+    <constant name="includedin" value="2266">
+      <type name="int"/>
+    </constant>
+    <constant name="includes" value="2267">
+      <type name="int"/>
+    </constant>
+    <constant name="infinity" value="2242">
+      <type name="int"/>
+    </constant>
+    <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" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="argv" direction="inout" 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="Initialize the library for use.
+Arguments:
+&quot;argc&quot; is the number of arguments.
+&quot;argv&quot; is an array of strings.
+Results:
+&quot;argc&quot; and &quot;argv&quot; 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.
+-------------------------------------------------------------">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc" direction="inout" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="argv" direction="inout" transfer-ownership="full">
+          <array length="0" c:type="gchar***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="input_add"
+              c:identifier="gdk_input_add"
+              doc="Establish a callback when a condition becomes true on
+a file descriptor.
+gdk_input_remove()."
+              deprecated="Use g_io_add_watch() on a #GIOChannel"
+              deprecated-version="2.14">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="source" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="condition" transfer-ownership="none">
+          <type name="InputCondition" c:type="GdkInputCondition"/>
+        </parameter>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="InputFunction" c:type="GdkInputFunction"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="input_add_full"
+              c:identifier="gdk_input_add_full"
+              doc="handler is removed.
+Establish a callback when a condition becomes true on
+a file descriptor.
+gdk_input_remove()."
+              deprecated="Use g_io_add_watch_full() on a #GIOChannel"
+              deprecated-version="2.14">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="source" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="condition" transfer-ownership="none">
+          <type name="InputCondition" c:type="GdkInputCondition"/>
+        </parameter>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <type name="InputFunction" c:type="GdkInputFunction"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="call">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="input_remove" c:identifier="gdk_input_remove">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="input_set_extension_events"
+              c:identifier="gdk_input_set_extension_events">
+      <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="mask" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="ExtensionMode" c:type="GdkExtensionMode"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="integral" value="2239">
+      <type name="int"/>
+    </constant>
+    <constant name="intersection" value="2268">
+      <type name="int"/>
+    </constant>
+    <constant name="iogonek" value="999">
+      <type name="int"/>
+    </constant>
+    <constant name="itilde" value="949">
+      <type name="int"/>
+    </constant>
+    <constant name="j" value="106">
+      <type name="int"/>
+    </constant>
+    <constant name="jcircumflex" value="700">
+      <type name="int"/>
+    </constant>
+    <constant name="jot" value="3018">
+      <type name="int"/>
+    </constant>
+    <constant name="k" value="107">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_A" value="1201">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_CHI" value="1217">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_E" value="1204">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_FU" value="1228">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_HA" value="1226">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_HE" value="1229">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_HI" value="1227">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_HO" value="1230">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_HU" value="1228">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_I" value="1202">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_KA" value="1206">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_KE" value="1209">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_KI" value="1207">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_KO" value="1210">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_KU" value="1208">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_MA" value="1231">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_ME" value="1234">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_MI" value="1232">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_MO" value="1235">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_MU" value="1233">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_N" value="1245">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_NA" value="1221">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_NE" value="1224">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_NI" value="1222">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_NO" value="1225">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_NU" value="1223">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_O" value="1205">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_RA" value="1239">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_RE" value="1242">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_RI" value="1240">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_RO" value="1243">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_RU" value="1241">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_SA" value="1211">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_SE" value="1214">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_SHI" value="1212">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_SO" value="1215">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_SU" value="1213">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_TA" value="1216">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_TE" value="1219">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_TI" value="1217">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_TO" value="1220">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_TSU" value="1218">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_TU" value="1218">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_U" value="1203">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_WA" value="1244">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_WO" value="1190">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_YA" value="1236">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_YO" value="1238">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_YU" value="1237">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_a" value="1191">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_closingbracket" value="1187">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_comma" value="1188">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_conjunctive" value="1189">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_e" value="1194">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_fullstop" value="1185">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_i" value="1192">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_middledot" value="1189">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_o" value="1195">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_openingbracket" value="1186">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_tsu" value="1199">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_tu" value="1199">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_u" value="1193">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_ya" value="1196">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_yo" value="1198">
+      <type name="int"/>
+    </constant>
+    <constant name="kana_yu" value="1197">
+      <type name="int"/>
+    </constant>
+    <constant name="kappa" value="930">
+      <type name="int"/>
+    </constant>
+    <constant name="kcedilla" value="1011">
+      <type name="int"/>
+    </constant>
+    <function name="keyboard_grab" c:identifier="gdk_keyboard_grab">
+      <return-value transfer-ownership="full">
+        <type name="GrabStatus" c:type="GdkGrabStatus"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="owner_events" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyboard_grab_info_libgtk_only"
+              c:identifier="gdk_keyboard_grab_info_libgtk_only"
+              doc="the @owner_events flag to gdk_keyboard_grab() was %TRUE.
+Determines information about the current keyboard grab.
+This is not public API and must not be used by applications.
+keyboard grabbed.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="grab_window" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow**"/>
+        </parameter>
+        <parameter name="owner_events"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="boolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyboard_ungrab"
+              c:identifier="gdk_keyboard_ungrab"
+              doc="timestamp is available.
+Ungrabs the keyboard on the default display, if it is grabbed by this
+application.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyval_convert_case"
+              c:identifier="gdk_keyval_convert_case"
+              doc="Obtains the upper- and lower-case versions of the keyval @symbol.
+Examples of keyvals are #GDK_a, #GDK_Enter, #GDK_F1, etc.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="symbol" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="lower"
+                   direction="out"
+                   transfer-ownership="full"
+                   doc="return location for lowercase version of @symbol">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="upper"
+                   direction="out"
+                   transfer-ownership="full"
+                   doc="return location for uppercase version of @symbol">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyval_from_name" c:identifier="gdk_keyval_from_name">
+      <return-value transfer-ownership="none">
+        <type name="uint" 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="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyval_is_upper" c:identifier="gdk_keyval_is_upper">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="uint" 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="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyval_to_lower" c:identifier="gdk_keyval_to_lower">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyval_to_unicode"
+              c:identifier="gdk_keyval_to_unicode"
+              doc="Convert from a GDK key symbol to the corresponding ISO10646 (Unicode)
+character.
+is no corresponding character.">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="keyval_to_upper" c:identifier="gdk_keyval_to_upper">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="kra" value="930">
+      <type name="int"/>
+    </constant>
+    <constant name="l" value="108">
+      <type name="int"/>
+    </constant>
+    <constant name="lacute" value="485">
+      <type name="int"/>
+    </constant>
+    <constant name="latincross" value="2777">
+      <type name="int"/>
+    </constant>
+    <constant name="lbelowdot" value="16784951">
+      <type name="int"/>
+    </constant>
+    <constant name="lcaron" value="437">
+      <type name="int"/>
+    </constant>
+    <constant name="lcedilla" value="950">
+      <type name="int"/>
+    </constant>
+    <constant name="leftanglebracket" value="2748">
+      <type name="int"/>
+    </constant>
+    <constant name="leftarrow" value="2299">
+      <type name="int"/>
+    </constant>
+    <constant name="leftcaret" value="2979">
+      <type name="int"/>
+    </constant>
+    <constant name="leftdoublequotemark" value="2770">
+      <type name="int"/>
+    </constant>
+    <constant name="leftmiddlecurlybrace" value="2223">
+      <type name="int"/>
+    </constant>
+    <constant name="leftopentriangle" value="2764">
+      <type name="int"/>
+    </constant>
+    <constant name="leftpointer" value="2794">
+      <type name="int"/>
+    </constant>
+    <constant name="leftradical" value="2209">
+      <type name="int"/>
+    </constant>
+    <constant name="leftshoe" value="3034">
+      <type name="int"/>
+    </constant>
+    <constant name="leftsinglequotemark" value="2768">
+      <type name="int"/>
+    </constant>
+    <constant name="leftt" value="2548">
+      <type name="int"/>
+    </constant>
+    <constant name="lefttack" value="3036">
+      <type name="int"/>
+    </constant>
+    <constant name="less" value="60">
+      <type name="int"/>
+    </constant>
+    <constant name="lessthanequal" value="2236">
+      <type name="int"/>
+    </constant>
+    <constant name="lf" value="2533">
+      <type name="int"/>
+    </constant>
+    <function name="list_visuals"
+              c:identifier="gdk_list_visuals"
+              doc="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&apos;re finished with it.">
+      <return-value transfer-ownership="full">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+    </function>
+    <constant name="logicaland" value="2270">
+      <type name="int"/>
+    </constant>
+    <constant name="logicalor" value="2271">
+      <type name="int"/>
+    </constant>
+    <constant name="lowleftcorner" value="2541">
+      <type name="int"/>
+    </constant>
+    <constant name="lowrightcorner" value="2538">
+      <type name="int"/>
+    </constant>
+    <constant name="lstroke" value="435">
+      <type name="int"/>
+    </constant>
+    <constant name="m" value="109">
+      <type name="int"/>
+    </constant>
+    <constant name="mabovedot" value="16784961">
+      <type name="int"/>
+    </constant>
+    <constant name="macron" value="175">
+      <type name="int"/>
+    </constant>
+    <constant name="malesymbol" value="2807">
+      <type name="int"/>
+    </constant>
+    <constant name="maltesecross" value="2800">
+      <type name="int"/>
+    </constant>
+    <constant name="marker" value="2751">
+      <type name="int"/>
+    </constant>
+    <constant name="masculine" value="186">
+      <type name="int"/>
+    </constant>
+    <function name="mbstowcs"
+              c:identifier="gdk_mbstowcs"
+              doc="Converts a multi-byte string to a wide character string.
+(The function name comes from an acronym of &apos;Multi-Byte String TO Wide
+Character String&apos;).
+the conversion failed.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="none">
+          <type name="WChar" c:type="GdkWChar*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="dest_max" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="minus" value="45">
+      <type name="int"/>
+    </constant>
+    <constant name="minutes" value="2774">
+      <type name="int"/>
+    </constant>
+    <constant name="mu" value="181">
+      <type name="int"/>
+    </constant>
+    <constant name="multiply" value="215">
+      <type name="int"/>
+    </constant>
+    <constant name="musicalflat" value="2806">
+      <type name="int"/>
+    </constant>
+    <constant name="musicalsharp" value="2805">
+      <type name="int"/>
+    </constant>
+    <constant name="n" value="110">
+      <type name="int"/>
+    </constant>
+    <constant name="nabla" value="2245">
+      <type name="int"/>
+    </constant>
+    <constant name="nacute" value="497">
+      <type name="int"/>
+    </constant>
+    <constant name="ncaron" value="498">
+      <type name="int"/>
+    </constant>
+    <constant name="ncedilla" value="1009">
+      <type name="int"/>
+    </constant>
+    <constant name="ninesubscript" value="16785545">
+      <type name="int"/>
+    </constant>
+    <constant name="ninesuperior" value="16785529">
+      <type name="int"/>
+    </constant>
+    <constant name="nl" value="2536">
+      <type name="int"/>
+    </constant>
+    <constant name="nobreakspace" value="160">
+      <type name="int"/>
+    </constant>
+    <constant name="notapproxeq" value="16785991">
+      <type name="int"/>
+    </constant>
+    <constant name="notelementof" value="16785929">
+      <type name="int"/>
+    </constant>
+    <constant name="notequal" value="2237">
+      <type name="int"/>
+    </constant>
+    <constant name="notidentical" value="16786018">
+      <type name="int"/>
+    </constant>
+    <function name="notify_startup_complete"
+              c:identifier="gdk_notify_startup_complete"
+              doc="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&apos;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."
+              version="2.2">
+      <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"
+              doc="process should be completed
+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."
+              version="2.12">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="startup_id" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="notsign" value="172">
+      <type name="int"/>
+    </constant>
+    <constant name="ntilde" value="241">
+      <type name="int"/>
+    </constant>
+    <constant name="numbersign" value="35">
+      <type name="int"/>
+    </constant>
+    <constant name="numerosign" value="1712">
+      <type name="int"/>
+    </constant>
+    <constant name="o" value="111">
+      <type name="int"/>
+    </constant>
+    <constant name="oacute" value="243">
+      <type name="int"/>
+    </constant>
+    <constant name="obarred" value="16777845">
+      <type name="int"/>
+    </constant>
+    <constant name="obelowdot" value="16785101">
+      <type name="int"/>
+    </constant>
+    <constant name="ocaron" value="16777682">
+      <type name="int"/>
+    </constant>
+    <constant name="ocircumflex" value="244">
+      <type name="int"/>
+    </constant>
+    <constant name="ocircumflexacute" value="16785105">
+      <type name="int"/>
+    </constant>
+    <constant name="ocircumflexbelowdot" value="16785113">
+      <type name="int"/>
+    </constant>
+    <constant name="ocircumflexgrave" value="16785107">
+      <type name="int"/>
+    </constant>
+    <constant name="ocircumflexhook" value="16785109">
+      <type name="int"/>
+    </constant>
+    <constant name="ocircumflextilde" value="16785111">
+      <type name="int"/>
+    </constant>
+    <constant name="odiaeresis" value="246">
+      <type name="int"/>
+    </constant>
+    <constant name="odoubleacute" value="501">
+      <type name="int"/>
+    </constant>
+    <constant name="oe" value="5053">
+      <type name="int"/>
+    </constant>
+    <function name="offscreen_window_get_embedder"
+              c:identifier="gdk_offscreen_window_get_embedder"
+              doc="Gets the window that @window is embedded in.
+embedded offscreen window"
+              version="2.18">
+      <return-value transfer-ownership="full">
+        <type name="Window" c:type="GdkWindow*"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="offscreen_window_get_pixmap"
+              c:identifier="gdk_offscreen_window_get_pixmap"
+              doc="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."
+              version="2.18">
+      <return-value transfer-ownership="full">
+        <type name="Pixmap" c:type="GdkPixmap*"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="offscreen_window_set_embedder"
+              c:identifier="gdk_offscreen_window_set_embedder"
+              doc="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."
+              version="2.18">
+      <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="embedder" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="ogonek" value="434">
+      <type name="int"/>
+    </constant>
+    <constant name="ograve" value="242">
+      <type name="int"/>
+    </constant>
+    <constant name="ohook" value="16785103">
+      <type name="int"/>
+    </constant>
+    <constant name="ohorn" value="16777633">
+      <type name="int"/>
+    </constant>
+    <constant name="ohornacute" value="16785115">
+      <type name="int"/>
+    </constant>
+    <constant name="ohornbelowdot" value="16785123">
+      <type name="int"/>
+    </constant>
+    <constant name="ohorngrave" value="16785117">
+      <type name="int"/>
+    </constant>
+    <constant name="ohornhook" value="16785119">
+      <type name="int"/>
+    </constant>
+    <constant name="ohorntilde" value="16785121">
+      <type name="int"/>
+    </constant>
+    <constant name="omacron" value="1010">
+      <type name="int"/>
+    </constant>
+    <constant name="oneeighth" value="2755">
+      <type name="int"/>
+    </constant>
+    <constant name="onefifth" value="2738">
+      <type name="int"/>
+    </constant>
+    <constant name="onehalf" value="189">
+      <type name="int"/>
+    </constant>
+    <constant name="onequarter" value="188">
+      <type name="int"/>
+    </constant>
+    <constant name="onesixth" value="2742">
+      <type name="int"/>
+    </constant>
+    <constant name="onesubscript" value="16785537">
+      <type name="int"/>
+    </constant>
+    <constant name="onesuperior" value="185">
+      <type name="int"/>
+    </constant>
+    <constant name="onethird" value="2736">
+      <type name="int"/>
+    </constant>
+    <constant name="ooblique" value="248">
+      <type name="int"/>
+    </constant>
+    <constant name="openrectbullet" value="2786">
+      <type name="int"/>
+    </constant>
+    <constant name="openstar" value="2789">
+      <type name="int"/>
+    </constant>
+    <constant name="opentribulletdown" value="2788">
+      <type name="int"/>
+    </constant>
+    <constant name="opentribulletup" value="2787">
+      <type name="int"/>
+    </constant>
+    <constant name="ordfeminine" value="170">
+      <type name="int"/>
+    </constant>
+    <constant name="oslash" value="248">
+      <type name="int"/>
+    </constant>
+    <constant name="otilde" value="245">
+      <type name="int"/>
+    </constant>
+    <constant name="overbar" value="3008">
+      <type name="int"/>
+    </constant>
+    <constant name="overline" value="1150">
+      <type name="int"/>
+    </constant>
+    <constant name="p" value="112">
+      <type name="int"/>
+    </constant>
+    <constant name="pabovedot" value="16784983">
+      <type name="int"/>
+    </constant>
+    <function name="pango_context_get"
+              c:identifier="gdk_pango_context_get"
+              doc="Creates a #PangoContext for the default GDK screen.
+The context must be freed when you&apos;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&apos;s font rendering settings.">
+      <return-value transfer-ownership="full">
+        <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"
+              doc="Creates a #PangoContext for @screen.
+The context must be freed when you&apos;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&apos;s font rendering settings."
+              version="2.2">
+      <return-value transfer-ownership="full">
+        <type name="Pango.Context" c:type="PangoContext*"/>
+      </return-value>
+      <parameters>
+        <parameter name="screen" transfer-ownership="none">
+          <type name="Screen" c:type="GdkScreen*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pango_context_set_colormap"
+              c:identifier="gdk_pango_context_set_colormap"
+              doc="This function used to set the colormap to be used for drawing with
+context used for drawing, so calling this function is no longer
+necessary.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </parameter>
+        <parameter name="colormap" transfer-ownership="none">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pango_layout_get_clip_region"
+              c:identifier="gdk_pango_layout_get_clip_region"
+              doc="Obtains a clip region which contains the areas where the given ranges
+of text would be drawn. @x_origin and @y_origin are the same position
+you would pass to gdk_draw_layout_line(). @index_ranges should contain
+ranges of bytes in the layout&apos;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.">
+      <return-value transfer-ownership="full">
+        <type name="Region" c:type="GdkRegion*"/>
+      </return-value>
+      <parameters>
+        <parameter name="layout" transfer-ownership="none">
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </parameter>
+        <parameter name="x_origin" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="y_origin" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="index_ranges"
+                   direction="out"
+                   transfer-ownership="none">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="n_ranges" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pango_layout_line_get_clip_region"
+              c:identifier="gdk_pango_layout_line_get_clip_region"
+              doc="Obtains a clip region which contains the areas where the given
+ranges of text would be drawn. @x_origin and @y_origin are the same
+position you would pass to gdk_draw_layout_line(). @index_ranges
+should contain ranges of bytes in the layout&apos;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.">
+      <return-value transfer-ownership="full">
+        <type name="Region" c:type="GdkRegion*"/>
+      </return-value>
+      <parameters>
+        <parameter name="line" transfer-ownership="none">
+          <type name="Pango.LayoutLine" c:type="PangoLayoutLine*"/>
+        </parameter>
+        <parameter name="x_origin" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="y_origin" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="index_ranges"
+                   direction="out"
+                   transfer-ownership="none">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="n_ranges" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="paragraph" value="182">
+      <type name="int"/>
+    </constant>
+    <constant name="parenleft" value="40">
+      <type name="int"/>
+    </constant>
+    <constant name="parenright" value="41">
+      <type name="int"/>
+    </constant>
+    <function name="parse_args"
+              c:identifier="gdk_parse_args"
+              doc="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&apos;t call this function explicitely if you are using
+gtk_init(), gtk_init_check(), gdk_init(), or gdk_init_check()."
+              version="2.2">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="argv" transfer-ownership="none">
+          <type name="utf8" c:type="gchar***"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="partdifferential" value="16785922">
+      <type name="int"/>
+    </constant>
+    <constant name="partialderivative" value="2287">
+      <type name="int"/>
+    </constant>
+    <constant name="percent" value="37">
+      <type name="int"/>
+    </constant>
+    <constant name="period" value="46">
+      <type name="int"/>
+    </constant>
+    <constant name="periodcentered" value="183">
+      <type name="int"/>
+    </constant>
+    <constant name="phonographcopyright" value="2811">
+      <type name="int"/>
+    </constant>
+    <function name="pixbuf_get_from_drawable"
+              c:identifier="gdk_pixbuf_get_from_drawable"
+              doc="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&apos;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&apos;s
+iconified/minimized or not on the current workspace), then %NULL
+will be returned.
+If memory can&apos;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.)
+This function calls gdk_drawable_get_image() internally and
+converts the resulting image to a #GdkPixbuf, so the
+documentation for gdk_drawable_get_image() may also be relevant.
+pixbuf with a reference count of 1 if no destination pixbuf was specified, or %NULL on error">
+      <return-value transfer-ownership="full">
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="Destination pixbuf, or %NULL if a new pixbuf should be created.">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="Drawable" c:type="GdkDrawable*"/>
+        </parameter>
+        <parameter name="cmap" transfer-ownership="none">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="src_x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="src_y" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="dest_x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="dest_y" 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="pixbuf_get_from_image"
+              c:identifier="gdk_pixbuf_get_from_image"
+              doc="Same as gdk_pixbuf_get_from_drawable() but gets the pixbuf from
+an image.">
+      <return-value transfer-ownership="full">
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="Destination pixbuf, or %NULL if a new pixbuf should be created.">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="Image" c:type="GdkImage*"/>
+        </parameter>
+        <parameter name="cmap"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="A colormap, or %NULL to use the one for @src">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="src_x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="src_y" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="dest_x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="dest_y" 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="pixbuf_render_pixmap_and_mask"
+              c:identifier="gdk_pixbuf_render_pixmap_and_mask"
+              doc="or %NULL if the pixmap is not needed.
+or %NULL if the mask is not needed.
+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 gdk_draw_pixbuf() and gdk_pixbuf_render_threshold_alpha().
+The pixmap that is created is created for the colormap returned
+by gdk_rgb_get_colormap(). 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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="pixmap_return" transfer-ownership="none">
+          <type name="Pixmap" c:type="GdkPixmap**"/>
+        </parameter>
+        <parameter name="mask_return" transfer-ownership="none">
+          <type name="Bitmap" c:type="GdkBitmap**"/>
+        </parameter>
+        <parameter name="alpha_threshold" transfer-ownership="none">
+          <type name="int" 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="or %NULL if the pixmap is not needed.
+or %NULL if the mask is not needed.
+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 gdk_draw_pixbuf(), 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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="colormap" transfer-ownership="none">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="pixmap_return" transfer-ownership="none">
+          <type name="Pixmap" c:type="GdkPixmap**"/>
+        </parameter>
+        <parameter name="mask_return" transfer-ownership="none">
+          <type name="Bitmap" c:type="GdkBitmap**"/>
+        </parameter>
+        <parameter name="alpha_threshold" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixbuf_render_threshold_alpha"
+              c:identifier="gdk_pixbuf_render_threshold_alpha"
+              doc="other values will be painted as one.
+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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="bitmap" transfer-ownership="none">
+          <type name="Bitmap" c:type="GdkBitmap*"/>
+        </parameter>
+        <parameter name="src_x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="src_y" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="dest_x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="dest_y" 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>
+        <parameter name="alpha_threshold" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixbuf_render_to_drawable"
+              c:identifier="gdk_pixbuf_render_to_drawable"
+              doc="Renders a rectangular portion of a pixbuf to a drawable while using the
+specified GC.  This is done using GdkRGB, so the specified drawable must have
+the GdkRGB visual and colormap.  Note that this function will ignore the
+opacity information for images with an alpha channel; the GC must already
+have the clipping mask set if you want transparent regions to show through.
+For an explanation of dither offsets, see the GdkRGB documentation.  In
+brief, the dither offset is important when re-rendering partial regions of an
+image to a rendered version of the full image, or for when the offsets to a
+base position change, as in scrolling.  The dither matrix has to be shifted
+for consistent visual results.  If you do not have any of these cases, the
+dither offsets can be both zero."
+              deprecated="This function is obsolete. Use gdk_draw_pixbuf() instead."
+              deprecated-version="2.4">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="drawable" transfer-ownership="none">
+          <type name="Drawable" c:type="GdkDrawable*"/>
+        </parameter>
+        <parameter name="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </parameter>
+        <parameter name="src_x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="src_y" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="dest_x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="dest_y" 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>
+        <parameter name="dither" transfer-ownership="none">
+          <type name="RgbDither" c:type="GdkRgbDither"/>
+        </parameter>
+        <parameter name="x_dither" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="y_dither" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixbuf_render_to_drawable_alpha"
+              c:identifier="gdk_pixbuf_render_to_drawable_alpha"
+              doc="Renders a rectangular portion of a pixbuf to a drawable.  The destination
+drawable must have a colormap. All windows have a colormap, however, pixmaps
+only have colormap by default if they were created with a non-%NULL window argument.
+Otherwise a colormap must be set on them with gdk_drawable_set_colormap.
+On older X servers, rendering pixbufs with an alpha channel involves round trips
+to the X server, and may be somewhat slow."
+              deprecated="This function is obsolete. Use gdk_draw_pixbuf() instead."
+              deprecated-version="2.4">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixbuf" transfer-ownership="none">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="drawable" transfer-ownership="none">
+          <type name="Drawable" c:type="GdkDrawable*"/>
+        </parameter>
+        <parameter name="src_x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="src_y" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="dest_x" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="dest_y" 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>
+        <parameter name="alpha_mode" transfer-ownership="none">
+          <type name="GdkPixbuf.PixbufAlphaMode" c:type="GdkPixbufAlphaMode"/>
+        </parameter>
+        <parameter name="alpha_threshold" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="dither" transfer-ownership="none">
+          <type name="RgbDither" c:type="GdkRgbDither"/>
+        </parameter>
+        <parameter name="x_dither" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="y_dither" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="plus" value="43">
+      <type name="int"/>
+    </constant>
+    <constant name="plusminus" value="177">
+      <type name="int"/>
+    </constant>
+    <function name="pointer_grab" c:identifier="gdk_pointer_grab">
+      <return-value transfer-ownership="full">
+        <type name="GrabStatus" c:type="GdkGrabStatus"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="owner_events" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="event_mask" transfer-ownership="none">
+          <type name="EventMask" c:type="GdkEventMask"/>
+        </parameter>
+        <parameter name="confine_to" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="cursor" transfer-ownership="none">
+          <type name="Cursor" c:type="GdkCursor*"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pointer_grab_info_libgtk_only"
+              c:identifier="gdk_pointer_grab_info_libgtk_only"
+              doc="the @owner_events flag to gdk_pointer_grab() was %TRUE.
+Determines information about the current pointer grab.
+This is not public API and must not be used by applications.
+pointer grabbed.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="grab_window" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow**"/>
+        </parameter>
+        <parameter name="owner_events"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="boolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pointer_is_grabbed"
+              c:identifier="gdk_pointer_is_grabbed"
+              doc="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.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="pointer_ungrab"
+              c:identifier="gdk_pointer_ungrab"
+              doc="timestamp is available.
+Ungrabs the pointer on the default display, if it is grabbed by this
+application.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="uint32" 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>
+    <constant name="prescription" value="2772">
+      <type name="int"/>
+    </constant>
+    <constant name="prolongedsound" value="1200">
+      <type name="int"/>
+    </constant>
+    <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="int" c:type="gint"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="PropMode" c:type="GdkPropMode"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="nelements" transfer-ownership="none">
+          <type name="int" 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="boolean" 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="ulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="pdelete" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="actual_property_type" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom*"/>
+        </parameter>
+        <parameter name="actual_format"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="actual_length"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="data" direction="out" transfer-ownership="full">
+          <type name="uint8" c:type="guchar**"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="punctspace" value="2726">
+      <type name="int"/>
+    </constant>
+    <constant name="q" value="113">
+      <type name="int"/>
+    </constant>
+    <constant name="quad" value="3020">
+      <type name="int"/>
+    </constant>
+    <function name="query_depths"
+              c:identifier="gdk_query_depths"
+              doc="This function returns the available bit depths for the default
+screen. It&apos;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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="depths"
+                   direction="out"
+                   transfer-ownership="full"
+                   doc="return location for available depths">
+          <array c:type="gint**">
+            <type name="int"/>
+          </array>
+        </parameter>
+        <parameter name="count"
+                   direction="out"
+                   transfer-ownership="full"
+                   doc="return location for number of available depths">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="query_visual_types"
+              c:identifier="gdk_query_visual_types"
+              doc="This function returns the available visual types for the default
+screen. It&apos;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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="visual_types" transfer-ownership="none">
+          <type name="VisualType" c:type="GdkVisualType**"/>
+        </parameter>
+        <parameter name="count" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="question" value="63">
+      <type name="int"/>
+    </constant>
+    <constant name="questiondown" value="191">
+      <type name="int"/>
+    </constant>
+    <constant name="quotedbl" value="34">
+      <type name="int"/>
+    </constant>
+    <constant name="quoteleft" value="96">
+      <type name="int"/>
+    </constant>
+    <constant name="quoteright" value="39">
+      <type name="int"/>
+    </constant>
+    <constant name="r" value="114">
+      <type name="int"/>
+    </constant>
+    <constant name="racute" value="480">
+      <type name="int"/>
+    </constant>
+    <constant name="radical" value="2262">
+      <type name="int"/>
+    </constant>
+    <constant name="rcaron" value="504">
+      <type name="int"/>
+    </constant>
+    <constant name="rcedilla" value="947">
+      <type name="int"/>
+    </constant>
+    <function name="region_polygon"
+              c:identifier="gdk_region_polygon"
+              doc="polygon overlaps itself.
+Creates a new #GdkRegion using the polygon defined by a
+number of points.">
+      <return-value transfer-ownership="full">
+        <type name="Region" c:type="GdkRegion*"/>
+      </return-value>
+      <parameters>
+        <parameter name="points" transfer-ownership="none">
+          <type name="Point" c:type="GdkPoint*"/>
+        </parameter>
+        <parameter name="n_points" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="fill_rule" transfer-ownership="none">
+          <type name="FillRule" c:type="GdkFillRule"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="region_rectangle"
+              c:identifier="gdk_region_rectangle"
+              doc="Creates a new region containing the area @rectangle.">
+      <return-value transfer-ownership="full">
+        <type name="Region" c:type="GdkRegion*"/>
+      </return-value>
+      <parameters>
+        <parameter name="rectangle" transfer-ownership="none">
+          <type name="Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="registered" value="174">
+      <type name="int"/>
+    </constant>
+    <function name="rgb_colormap_ditherable"
+              c:identifier="gdk_rgb_colormap_ditherable">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="cmap" transfer-ownership="none">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rgb_ditherable" c:identifier="gdk_rgb_ditherable">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="rgb_find_color"
+              c:identifier="gdk_rgb_find_color"
+              doc="drawable you&apos;re using to draw. If you&apos;re drawing to a #GtkWidget,
+call gtk_widget_get_colormap().
+gdk_rgb_find_color() will fill in the %pixel field with the best
+matching pixel from a color cube. The color is then ready to be
+used for drawing, e.g. you can call gdk_gc_set_foreground() which
+expects %pixel to be initialized.
+In many cases, you can avoid this whole issue by calling
+gdk_gc_set_rgb_fg_color() or gdk_gc_set_rgb_bg_color(), which
+do not expect %pixel to be initialized in advance. If you use those
+functions, there&apos;s no need for gdk_rgb_find_color().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="colormap" transfer-ownership="none">
+          <type name="Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Color" c:type="GdkColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rgb_gc_set_background"
+              c:identifier="gdk_rgb_gc_set_background">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </parameter>
+        <parameter name="rgb" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rgb_gc_set_foreground"
+              c:identifier="gdk_rgb_gc_set_foreground">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="gc" transfer-ownership="none">
+          <type name="GC" c:type="GdkGC*"/>
+        </parameter>
+        <parameter name="rgb" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rgb_get_colormap"
+              c:identifier="gdk_rgb_get_colormap"
+              doc="Get the preferred colormap for rendering image data.  Not a
+very useful function; historically, GDK could only render RGB image
+data to one colormap and visual, but in the current version it can
+render to any colormap and visual. So there&apos;s no need to call this
+function.">
+      <return-value transfer-ownership="none" doc="the preferred colormap">
+        <type name="Colormap" c:type="GdkColormap*"/>
+      </return-value>
+    </function>
+    <function name="rgb_get_visual"
+              c:identifier="gdk_rgb_get_visual"
+              doc="Gets a &quot;preferred visual&quot; chosen by GdkRGB for rendering image data
+on the default screen. In previous versions of GDK, this was the
+only visual GdkRGB could use for rendering. In current versions,
+it&apos;s simply the visual GdkRGB would have chosen as the optimal one
+in those previous versions. GdkRGB can now render to drawables with
+any visual.">
+      <return-value transfer-ownership="none"
+                    doc="The #GdkVisual chosen by GdkRGB.">
+        <type name="Visual" c:type="GdkVisual*"/>
+      </return-value>
+    </function>
+    <function name="rgb_init" c:identifier="gdk_rgb_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="rgb_set_install" c:identifier="gdk_rgb_set_install">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="install" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rgb_set_min_colors" c:identifier="gdk_rgb_set_min_colors">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="min_colors" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rgb_set_verbose" c:identifier="gdk_rgb_set_verbose">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="verbose" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rgb_xpixel_from_rgb"
+              c:identifier="gdk_rgb_xpixel_from_rgb">
+      <return-value transfer-ownership="none">
+        <type name="ulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="rgb" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="rightanglebracket" value="2750">
+      <type name="int"/>
+    </constant>
+    <constant name="rightarrow" value="2301">
+      <type name="int"/>
+    </constant>
+    <constant name="rightcaret" value="2982">
+      <type name="int"/>
+    </constant>
+    <constant name="rightdoublequotemark" value="2771">
+      <type name="int"/>
+    </constant>
+    <constant name="rightmiddlecurlybrace" value="2224">
+      <type name="int"/>
+    </constant>
+    <constant name="rightmiddlesummation" value="2231">
+      <type name="int"/>
+    </constant>
+    <constant name="rightopentriangle" value="2765">
+      <type name="int"/>
+    </constant>
+    <constant name="rightpointer" value="2795">
+      <type name="int"/>
+    </constant>
+    <constant name="rightshoe" value="3032">
+      <type name="int"/>
+    </constant>
+    <constant name="rightsinglequotemark" value="2769">
+      <type name="int"/>
+    </constant>
+    <constant name="rightt" value="2549">
+      <type name="int"/>
+    </constant>
+    <constant name="righttack" value="3068">
+      <type name="int"/>
+    </constant>
+    <constant name="s" value="115">
+      <type name="int"/>
+    </constant>
+    <constant name="sabovedot" value="16784993">
+      <type name="int"/>
+    </constant>
+    <constant name="sacute" value="438">
+      <type name="int"/>
+    </constant>
+    <constant name="scaron" value="441">
+      <type name="int"/>
+    </constant>
+    <constant name="scedilla" value="442">
+      <type name="int"/>
+    </constant>
+    <constant name="schwa" value="16777817">
+      <type name="int"/>
+    </constant>
+    <constant name="scircumflex" value="766">
+      <type name="int"/>
+    </constant>
+    <constant name="script_switch" value="65406">
+      <type name="int"/>
+    </constant>
+    <constant name="seconds" value="2775">
+      <type name="int"/>
+    </constant>
+    <constant name="section" value="167">
+      <type name="int"/>
+    </constant>
+    <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="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_owner_get"
+              c:identifier="gdk_selection_owner_get">
+      <return-value transfer-ownership="full">
+        <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"
+              doc="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."
+              version="2.2">
+      <return-value transfer-ownership="full">
+        <type name="Window" c:type="GdkWindow*"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="selection" transfer-ownership="none">
+          <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="boolean" 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="uint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="send_event" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_owner_set_for_display"
+              c:identifier="gdk_selection_owner_set_for_display"
+              doc="the given should be unset.
+If this is older than the timestamp given last time the owner was
+set for the given selection, the request will be ignored.
+owner, the current owner will be sent a SelectionClear event.
+Sets the #GdkWindow @owner as the current owner of the selection @selection.
+otherwise %FALSE."
+              version="2.2">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <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="uint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="send_event" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_property_get"
+              c:identifier="gdk_selection_property_get"
+              doc="the retrieval failed, %NULL we be stored here, otherwise, it
+ll be non-%NULL and the returned data should be freed with g_free()
+en you are finished using it. The length of the
+located memory is one more than the length
+the returned data, and the final byte will always
+zero, to ensure nul-termination of strings.
+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.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="requestor" transfer-ownership="none">
+          <type name="Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="data" direction="out" transfer-ownership="full">
+          <type name="uint8" c:type="guchar**"/>
+        </parameter>
+        <parameter name="prop_type" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom*"/>
+        </parameter>
+        <parameter name="prop_format"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="int" 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="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_send_notify_for_display"
+              c:identifier="gdk_selection_send_notify_for_display"
+              doc="or %GDK_NONE to indicate that the request was rejected.
+Send a response to SelectionRequest event."
+              version="2.2">
+      <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="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="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="semicolon" value="59">
+      <type name="int"/>
+    </constant>
+    <constant name="semivoicedsound" value="1247">
+      <type name="int"/>
+    </constant>
+    <function name="set_double_click_time"
+              c:identifier="gdk_set_double_click_time"
+              doc="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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="msec" transfer-ownership="none">
+          <type name="uint" 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"
+              doc="quantities related to the current pointer position,
+or %NULL to restore the default table.
+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().">
+      <return-value transfer-ownership="full">
+        <type name="PointerHooks" c:type="GdkPointerHooks*"/>
+      </return-value>
+      <parameters>
+        <parameter name="new_hooks" transfer-ownership="none">
+          <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="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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="show_events" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_sm_client_id"
+              c:identifier="gdk_set_sm_client_id"
+              doc="connection was opened, or %NULL to remove the property.
+Sets the &lt;literal&gt;SM_CLIENT_ID&lt;/literal&gt; property on the application&apos;s leader window so that
+the window manager can save the application&apos;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.)">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="sm_client_id" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_use_xshm" c:identifier="gdk_set_use_xshm">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="use_xshm" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="setting_get"
+              c:identifier="gdk_setting_get"
+              doc="Obtains a desktop-wide setting, such as the double-click time,
+for the default screen. See gdk_screen_get_setting().
+in @value, %FALSE otherwise.">
+      <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="value" transfer-ownership="none">
+          <type name="GObject.Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="seveneighths" value="2758">
+      <type name="int"/>
+    </constant>
+    <constant name="sevensubscript" value="16785543">
+      <type name="int"/>
+    </constant>
+    <constant name="sevensuperior" value="16785527">
+      <type name="int"/>
+    </constant>
+    <constant name="signaturemark" value="2762">
+      <type name="int"/>
+    </constant>
+    <constant name="signifblank" value="2732">
+      <type name="int"/>
+    </constant>
+    <constant name="similarequal" value="2249">
+      <type name="int"/>
+    </constant>
+    <constant name="singlelowquotemark" value="2813">
+      <type name="int"/>
+    </constant>
+    <constant name="sixsubscript" value="16785542">
+      <type name="int"/>
+    </constant>
+    <constant name="sixsuperior" value="16785526">
+      <type name="int"/>
+    </constant>
+    <constant name="slash" value="47">
+      <type name="int"/>
+    </constant>
+    <constant name="soliddiamond" value="2528">
+      <type name="int"/>
+    </constant>
+    <constant name="space" value="32">
+      <type name="int"/>
+    </constant>
+    <function name="spawn_command_line_on_screen"
+              c:identifier="gdk_spawn_command_line_on_screen"
+              doc="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."
+              version="2.4"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="screen" transfer-ownership="none">
+          <type name="Screen" c:type="GdkScreen*"/>
+        </parameter>
+        <parameter name="command_line" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spawn_on_screen"
+              c:identifier="gdk_spawn_on_screen"
+              doc="inherit parent&apos;s
+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."
+              version="2.4"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="screen" transfer-ownership="none">
+          <type name="Screen" c:type="GdkScreen*"/>
+        </parameter>
+        <parameter name="working_directory" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="argv" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="envp" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GLib.SpawnFlags" c:type="GSpawnFlags"/>
+        </parameter>
+        <parameter name="child_setup"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="6">
+          <type name="GLib.SpawnChildSetupFunc" c:type="GSpawnChildSetupFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="child_pid" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spawn_on_screen_with_pipes"
+              c:identifier="gdk_spawn_on_screen_with_pipes"
+              doc="inherit parent&apos;s
+child&apos;s stdin, or %NULL
+stdout, or %NULL
+stderr, or %NULL
+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."
+              version="2.4"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="screen" transfer-ownership="none">
+          <type name="Screen" c:type="GdkScreen*"/>
+        </parameter>
+        <parameter name="working_directory" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="argv" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="envp" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GLib.SpawnFlags" c:type="GSpawnFlags"/>
+        </parameter>
+        <parameter name="child_setup"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="6">
+          <type name="GLib.SpawnChildSetupFunc" c:type="GSpawnChildSetupFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="child_pid" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="standard_input"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="standard_output"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="standard_error"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="squareroot" value="16785946">
+      <type name="int"/>
+    </constant>
+    <constant name="ssharp" value="223">
+      <type name="int"/>
+    </constant>
+    <constant name="sterling" value="163">
+      <type name="int"/>
+    </constant>
+    <constant name="stricteq" value="16786019">
+      <type name="int"/>
+    </constant>
+    <function name="string_extents"
+              c:identifier="gdk_string_extents"
+              doc="Gets the metrics of a nul-terminated string.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="Font" c:type="GdkFont*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="lbearing" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="rbearing" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="width" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="ascent" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="descent" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_height"
+              c:identifier="gdk_string_height"
+              doc="Determines the total height of a given nul-terminated
+string. This value is not generally useful, because you
+cannot determine how this total height will be drawn in
+relation to the baseline. See gdk_string_extents().">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="Font" c:type="GdkFont*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_measure"
+              c:identifier="gdk_string_measure"
+              doc="Determines the distance from the origin to the rightmost
+portion of a nul-terminated string when drawn. This is not the
+correct value for determining the origin of the next
+portion when drawing text in multiple pieces.
+See gdk_string_width().">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="Font" c:type="GdkFont*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_to_compound_text"
+              c:identifier="gdk_string_to_compound_text">
+      <return-value transfer-ownership="none">
+        <type name="int" 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" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="ctext" direction="out" transfer-ownership="full">
+          <type name="uint8" c:type="guchar**"/>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_to_compound_text_for_display"
+              c:identifier="gdk_string_to_compound_text_for_display"
+              doc="(to be used as the type for the property).
+Convert a string from the encoding of the current
+locale into a form suitable for storing in a window property."
+              version="2.2">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <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" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="ctext" direction="out" transfer-ownership="full">
+          <type name="uint8" c:type="guchar**"/>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_width"
+              c:identifier="gdk_string_width"
+              doc="Determines the width of a nul-terminated string.
+(The distance from the origin of the string to the
+point where the next string in a sequence of strings
+should be drawn)">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="Font" c:type="GdkFont*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </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>
+    <constant name="t" value="116">
+      <type name="int"/>
+    </constant>
+    <constant name="tabovedot" value="16785003">
+      <type name="int"/>
+    </constant>
+    <constant name="tcaron" value="443">
+      <type name="int"/>
+    </constant>
+    <constant name="tcedilla" value="510">
+      <type name="int"/>
+    </constant>
+    <constant name="telephone" value="2809">
+      <type name="int"/>
+    </constant>
+    <constant name="telephonerecorder" value="2810">
+      <type name="int"/>
+    </constant>
+    <function name="test_render_sync"
+              c:identifier="gdk_test_render_sync"
+              doc="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."
+              version="2.14">
+      <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>
+      </parameters>
+    </function>
+    <function name="test_simulate_button"
+              c:identifier="gdk_test_simulate_button">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="int" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="button" transfer-ownership="none">
+          <type name="uint" 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="boolean" 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="int" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="uint" 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_extents"
+              c:identifier="gdk_text_extents"
+              doc="font is a 16-bit font, this is twice the length
+of the text in characters.)
+Gets the metrics of a string.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="Font" c:type="GdkFont*"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="text_length" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="lbearing" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="rbearing" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="width" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="ascent" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="descent" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_extents_wc"
+              c:identifier="gdk_text_extents_wc"
+              doc="Gets the metrics of a string of wide characters.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="Font" c:type="GdkFont*"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <type name="WChar" c:type="GdkWChar*"/>
+        </parameter>
+        <parameter name="text_length" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="lbearing" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="rbearing" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="width" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="ascent" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="descent" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_height"
+              c:identifier="gdk_text_height"
+              doc="Determines the total height of a given string.
+This value is not generally useful, because you cannot
+determine how this total height will be drawn in
+relation to the baseline. See gdk_text_extents().">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="Font" c:type="GdkFont*"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="text_length" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_measure"
+              c:identifier="gdk_text_measure"
+              doc="Determines the distance from the origin to the rightmost
+portion of a string when drawn. This is not the
+correct value for determining the origin of the next
+portion when drawing text in multiple pieces.
+See gdk_text_width().">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="Font" c:type="GdkFont*"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="text_length" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </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="int" 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="int" c:type="gint"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="int" 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"
+              doc="common values for this are STRING, or COMPOUND_TEXT.
+This is value used as the type for the property.
+the encoding of the current locale. This array should be
+freed using gdk_free_text_list().
+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."
+              version="2.2">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="encoding" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="list" transfer-ownership="none">
+          <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="list should be freed with g_strfreev().
+Convert a text property in the giving encoding to
+a list of UTF-8 strings.
+list.">
+      <return-value transfer-ownership="none">
+        <type name="int" 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="int" c:type="gint"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="list"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="location to store the list of strings or %NULL. The">
+          <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"
+              doc="list should be freed with g_strfreev().
+Converts a text property in the given encoding to
+a list of UTF-8 strings.
+list."
+              version="2.2">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="encoding" transfer-ownership="none">
+          <type name="Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="list" transfer-ownership="none">
+          <type name="utf8" c:type="gchar***"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_width"
+              c:identifier="gdk_text_width"
+              doc="Determines the width of a given string.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="Font" c:type="GdkFont*"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="text_length" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_width_wc"
+              c:identifier="gdk_text_width_wc"
+              doc="Determines the width of a given wide-character string.">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="font" transfer-ownership="none">
+          <type name="Font" c:type="GdkFont*"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <type name="WChar" c:type="GdkWChar*"/>
+        </parameter>
+        <parameter name="text_length" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="therefore" value="2240">
+      <type name="int"/>
+    </constant>
+    <constant name="thinspace" value="2727">
+      <type name="int"/>
+    </constant>
+    <constant name="thorn" value="254">
+      <type name="int"/>
+    </constant>
+    <function name="threads_add_idle"
+              c:identifier="gdk_threads_add_idle"
+              doc="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()."
+              version="2.12">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="1">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_idle_full"
+              c:identifier="gdk_threads_add_idle_full"
+              doc="range btweeen #G_PRIORITY_DEFAULT_IDLE and #G_PRIORITY_HIGH_IDLE
+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);
+}
+]|"
+              version="2.12">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   scope="call"
+                   doc="function to call when the idle is removed, or %NULL">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_timeout"
+              c:identifier="gdk_threads_add_timeout"
+              doc="(1/1000ths of a second)
+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()."
+              version="2.12">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_timeout_full"
+              c:identifier="gdk_threads_add_timeout_full"
+              doc="range between #G_PRIORITY_DEFAULT_IDLE and #G_PRIORITY_HIGH_IDLE.
+(1/1000ths of a second)
+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 &apos;catch up&apos; 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);
+}
+]|"
+              version="2.12">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   scope="call"
+                   doc="function to call when the timeout is removed, or %NULL">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_timeout_seconds"
+              c:identifier="gdk_threads_add_timeout_seconds"
+              doc="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()."
+              version="2.14">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="threads_add_timeout_seconds_full"
+              c:identifier="gdk_threads_add_timeout_seconds_full"
+              doc="range between #G_PRIORITY_DEFAULT_IDLE and #G_PRIORITY_HIGH_IDLE.
+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&apos;t need finer granularity."
+              version="2.14">
+      <return-value transfer-ownership="none" doc="of the event source.">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="priority" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   scope="call"
+                   doc="function to call when the timeout is removed, or %NULL">
+          <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="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().">
+      <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"
+              doc="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&apos;t need to use this method.
+This method must be called before gdk_threads_init(), and cannot
+be called multiple times."
+              version="2.4">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="enter_fn" transfer-ownership="none" scope="call">
+          <type name="GObject.Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="leave_fn" transfer-ownership="none" scope="call">
+          <type name="GObject.Callback" c:type="GCallback"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="threeeighths" value="2756">
+      <type name="int"/>
+    </constant>
+    <constant name="threefifths" value="2740">
+      <type name="int"/>
+    </constant>
+    <constant name="threequarters" value="190">
+      <type name="int"/>
+    </constant>
+    <constant name="threesubscript" value="16785539">
+      <type name="int"/>
+    </constant>
+    <constant name="threesuperior" value="179">
+      <type name="int"/>
+    </constant>
+    <constant name="tintegral" value="16785965">
+      <type name="int"/>
+    </constant>
+    <constant name="topintegral" value="2212">
+      <type name="int"/>
+    </constant>
+    <constant name="topleftparens" value="2219">
+      <type name="int"/>
+    </constant>
+    <constant name="topleftradical" value="2210">
+      <type name="int"/>
+    </constant>
+    <constant name="topleftsqbracket" value="2215">
+      <type name="int"/>
+    </constant>
+    <constant name="topleftsummation" value="2225">
+      <type name="int"/>
+    </constant>
+    <constant name="toprightparens" value="2221">
+      <type name="int"/>
+    </constant>
+    <constant name="toprightsqbracket" value="2217">
+      <type name="int"/>
+    </constant>
+    <constant name="toprightsummation" value="2229">
+      <type name="int"/>
+    </constant>
+    <constant name="topt" value="2551">
+      <type name="int"/>
+    </constant>
+    <constant name="topvertsummationconnector" value="2227">
+      <type name="int"/>
+    </constant>
+    <constant name="trademark" value="2761">
+      <type name="int"/>
+    </constant>
+    <constant name="trademarkincircle" value="2763">
+      <type name="int"/>
+    </constant>
+    <constant name="tslash" value="956">
+      <type name="int"/>
+    </constant>
+    <constant name="twofifths" value="2739">
+      <type name="int"/>
+    </constant>
+    <constant name="twosubscript" value="16785538">
+      <type name="int"/>
+    </constant>
+    <constant name="twosuperior" value="178">
+      <type name="int"/>
+    </constant>
+    <constant name="twothirds" value="2737">
+      <type name="int"/>
+    </constant>
+    <constant name="u" value="117">
+      <type name="int"/>
+    </constant>
+    <constant name="uacute" value="250">
+      <type name="int"/>
+    </constant>
+    <constant name="ubelowdot" value="16785125">
+      <type name="int"/>
+    </constant>
+    <constant name="ubreve" value="765">
+      <type name="int"/>
+    </constant>
+    <constant name="ucircumflex" value="251">
+      <type name="int"/>
+    </constant>
+    <constant name="udiaeresis" value="252">
+      <type name="int"/>
+    </constant>
+    <constant name="udoubleacute" value="507">
+      <type name="int"/>
+    </constant>
+    <constant name="ugrave" value="249">
+      <type name="int"/>
+    </constant>
+    <constant name="uhook" value="16785127">
+      <type name="int"/>
+    </constant>
+    <constant name="uhorn" value="16777648">
+      <type name="int"/>
+    </constant>
+    <constant name="uhornacute" value="16785129">
+      <type name="int"/>
+    </constant>
+    <constant name="uhornbelowdot" value="16785137">
+      <type name="int"/>
+    </constant>
+    <constant name="uhorngrave" value="16785131">
+      <type name="int"/>
+    </constant>
+    <constant name="uhornhook" value="16785133">
+      <type name="int"/>
+    </constant>
+    <constant name="uhorntilde" value="16785135">
+      <type name="int"/>
+    </constant>
+    <constant name="umacron" value="1022">
+      <type name="int"/>
+    </constant>
+    <constant name="underbar" value="3014">
+      <type name="int"/>
+    </constant>
+    <constant name="underscore" value="95">
+      <type name="int"/>
+    </constant>
+    <function name="unicode_to_keyval"
+              c:identifier="gdk_unicode_to_keyval"
+              doc="Convert from a ISO10646 character to a key symbol.
+or, if there is no corresponding symbol,
+wc | 0x01000000">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="wc" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="union" value="2269">
+      <type name="int"/>
+    </constant>
+    <constant name="uogonek" value="1017">
+      <type name="int"/>
+    </constant>
+    <constant name="uparrow" value="2300">
+      <type name="int"/>
+    </constant>
+    <constant name="upcaret" value="2985">
+      <type name="int"/>
+    </constant>
+    <constant name="upleftcorner" value="2540">
+      <type name="int"/>
+    </constant>
+    <constant name="uprightcorner" value="2539">
+      <type name="int"/>
+    </constant>
+    <constant name="upshoe" value="3011">
+      <type name="int"/>
+    </constant>
+    <constant name="upstile" value="3027">
+      <type name="int"/>
+    </constant>
+    <constant name="uptack" value="3022">
+      <type name="int"/>
+    </constant>
+    <constant name="uring" value="505">
+      <type name="int"/>
+    </constant>
+    <function name="utf8_to_compound_text"
+              c:identifier="gdk_utf8_to_compound_text"
+              doc="stored in @ctext
+Convert from UTF-8 to compound text.
+false.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </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" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="ctext" direction="out" transfer-ownership="full">
+          <type name="uint8" c:type="guchar**"/>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_to_compound_text_for_display"
+              c:identifier="gdk_utf8_to_compound_text_for_display"
+              doc="stored in @ctext
+Converts from UTF-8 to compound text.
+%FALSE."
+              version="2.2">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <type name="Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <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" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="ctext" direction="out" transfer-ownership="full">
+          <type name="uint8" c:type="guchar**"/>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_to_string_target"
+              c:identifier="gdk_utf8_to_string_target"
+              doc="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.)">
+      <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>
+    <constant name="utilde" value="1021">
+      <type name="int"/>
+    </constant>
+    <constant name="v" value="118">
+      <type name="int"/>
+    </constant>
+    <constant name="variation" value="2241">
+      <type name="int"/>
+    </constant>
+    <constant name="vertbar" value="2552">
+      <type name="int"/>
+    </constant>
+    <constant name="vertconnector" value="2214">
+      <type name="int"/>
+    </constant>
+    <constant name="voicedsound" value="1246">
+      <type name="int"/>
+    </constant>
+    <constant name="vt" value="2537">
+      <type name="int"/>
+    </constant>
+    <constant name="w" value="119">
+      <type name="int"/>
+    </constant>
+    <constant name="wacute" value="16785027">
+      <type name="int"/>
+    </constant>
+    <constant name="wcircumflex" value="16777589">
+      <type name="int"/>
+    </constant>
+    <function name="wcstombs"
+              c:identifier="gdk_wcstombs"
+              doc="Converts a wide character string to a multi-byte string.
+(The function name comes from an acronym of &apos;Wide Character String TO
+Multi-Byte String&apos;).
+conversion failed. The returned string should be freed with g_free() when no
+longer needed.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="src" transfer-ownership="none">
+          <type name="WChar" c:type="GdkWChar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <constant name="wdiaeresis" value="16785029">
+      <type name="int"/>
+    </constant>
+    <constant name="wgrave" value="16785025">
+      <type name="int"/>
+    </constant>
+    <constant name="x" value="120">
+      <type name="int"/>
+    </constant>
+    <constant name="xabovedot" value="16785035">
+      <type name="int"/>
+    </constant>
+    <constant name="y" value="121">
+      <type name="int"/>
+    </constant>
+    <constant name="yacute" value="253">
+      <type name="int"/>
+    </constant>
+    <constant name="ybelowdot" value="16785141">
+      <type name="int"/>
+    </constant>
+    <constant name="ycircumflex" value="16777591">
+      <type name="int"/>
+    </constant>
+    <constant name="ydiaeresis" value="255">
+      <type name="int"/>
+    </constant>
+    <constant name="yen" value="165">
+      <type name="int"/>
+    </constant>
+    <constant name="ygrave" value="16785139">
+      <type name="int"/>
+    </constant>
+    <constant name="yhook" value="16785143">
+      <type name="int"/>
+    </constant>
+    <constant name="ytilde" value="16785145">
+      <type name="int"/>
+    </constant>
+    <constant name="z" value="122">
+      <type name="int"/>
+    </constant>
+    <constant name="zabovedot" value="447">
+      <type name="int"/>
+    </constant>
+    <constant name="zacute" value="444">
+      <type name="int"/>
+    </constant>
+    <constant name="zcaron" value="446">
+      <type name="int"/>
+    </constant>
+    <constant name="zerosubscript" value="16785536">
+      <type name="int"/>
+    </constant>
+    <constant name="zerosuperior" value="16785520">
+      <type name="int"/>
+    </constant>
+    <constant name="zstroke" value="16777654">
+      <type name="int"/>
+    </constant>
+  </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/gdk.factor b/basis/gdk/gdk.factor
new file mode 100644 (file)
index 0000000..fc414cb
--- /dev/null
@@ -0,0 +1,12 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien.syntax cairo.ffi
+gir glib gobject gio gmodule gdk.pixbuf glib.ffi ;
+
+IN: gdk.ffi
+
+TYPEDEF: guint32 GdkNativeWindow
+TYPEDEF: guint32 GdkWChar
+
+IN-GIR: gdk vocab:gdk/Gdk-2.0.gir
+
diff --git a/basis/gdk/gl/GdkGL-1.0.gir b/basis/gdk/gl/GdkGL-1.0.gir
new file mode 100644 (file)
index 0000000..e86bb79
--- /dev/null
@@ -0,0 +1,30343 @@
+<?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="Gdk" 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"/>
+  <package name="gdk-x11-2.0"/>
+  <namespace name="Gdk"
+             version="1.0"
+             shared-library="libgdkglext-x11-1.0.so.0"
+             c:prefix="Gdk">
+    <constant name="GDKGLEXT_BINARY_AGE" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="GDKGLEXT_INTERFACE_AGE" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="GDKGLEXT_MAJOR_VERSION" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="GDKGLEXT_MICRO_VERSION" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="GDKGLEXT_MINOR_VERSION" value="2">
+      <type name="int"/>
+    </constant>
+    <bitfield name="GLBufferMask"
+              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="GLConfig"
+           c:type="GdkGLConfig"
+           parent="GObject.Object"
+           glib:type-name="GdkGLConfig"
+           glib:get-type="gdk_gl_config_get_type"
+           glib:type-struct="GLConfigClass">
+      <constructor name="new" c:identifier="gdk_gl_config_new">
+        <return-value transfer-ownership="full">
+          <type name="GLConfig" c:type="GdkGLConfig*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attrib_list"
+                     direction="out"
+                     transfer-ownership="none">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_by_mode" c:identifier="gdk_gl_config_new_by_mode">
+        <return-value transfer-ownership="full">
+          <type name="GLConfig" c:type="GdkGLConfig*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="GLConfigMode" c:type="GdkGLConfigMode"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_screen" c:identifier="gdk_gl_config_get_screen">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="get_attrib" c:identifier="gdk_gl_config_get_attrib">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="value" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_colormap" c:identifier="gdk_gl_config_get_colormap">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </method>
+      <method name="get_visual" c:identifier="gdk_gl_config_get_visual">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </method>
+      <method name="get_depth" c:identifier="gdk_gl_config_get_depth">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_layer_plane"
+              c:identifier="gdk_gl_config_get_layer_plane">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_n_aux_buffers"
+              c:identifier="gdk_gl_config_get_n_aux_buffers">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_n_sample_buffers"
+              c:identifier="gdk_gl_config_get_n_sample_buffers">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="is_rgba" c:identifier="gdk_gl_config_is_rgba">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_double_buffered"
+              c:identifier="gdk_gl_config_is_double_buffered">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_stereo" c:identifier="gdk_gl_config_is_stereo">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_alpha" c:identifier="gdk_gl_config_has_alpha">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_depth_buffer"
+              c:identifier="gdk_gl_config_has_depth_buffer">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_stencil_buffer"
+              c:identifier="gdk_gl_config_has_stencil_buffer">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_accum_buffer"
+              c:identifier="gdk_gl_config_has_accum_buffer">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="layer_plane">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="n_aux_buffers">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="n_sample_buffers">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="is_rgba" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_double_buffered" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="as_single_mode" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_stereo" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_alpha" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_depth_buffer" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_stencil_buffer" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_accum_buffer" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </class>
+    <enumeration name="GLConfigAttrib"
+                 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="GLConfigCaveat"
+                 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="GLConfigClass"
+            c:type="GdkGLConfigClass"
+            glib:is-gtype-struct-for="GLConfig">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <enumeration name="GLConfigError"
+                 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="GLConfigMode"
+              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="GLContext"
+           c:type="GdkGLContext"
+           parent="GObject.Object"
+           glib:type-name="GdkGLContext"
+           glib:get-type="gdk_gl_context_get_type"
+           glib:type-struct="GLContextClass">
+      <constructor name="new" c:identifier="gdk_gl_context_new">
+        <return-value transfer-ownership="full">
+          <type name="GLContext" c:type="GdkGLContext*"/>
+        </return-value>
+        <parameters>
+          <parameter name="gldrawable" transfer-ownership="none">
+            <type name="GLDrawable" c:type="GdkGLDrawable*"/>
+          </parameter>
+          <parameter name="share_list" transfer-ownership="none">
+            <type name="GLContext" c:type="GdkGLContext*"/>
+          </parameter>
+          <parameter name="direct" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="render_type" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="get_current" c:identifier="gdk_gl_context_get_current">
+        <return-value transfer-ownership="full">
+          <type name="GLContext" c:type="GdkGLContext*"/>
+        </return-value>
+      </function>
+      <method name="destroy" c:identifier="gdk_gl_context_destroy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="copy" c:identifier="gdk_gl_context_copy">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="src" transfer-ownership="none">
+            <type name="GLContext" c:type="GdkGLContext*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="ulong" c:type="unsigned long"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_gl_drawable"
+              c:identifier="gdk_gl_context_get_gl_drawable">
+        <return-value transfer-ownership="full">
+          <type name="GLDrawable" c:type="GdkGLDrawable*"/>
+        </return-value>
+      </method>
+      <method name="get_gl_config" c:identifier="gdk_gl_context_get_gl_config">
+        <return-value transfer-ownership="full">
+          <type name="GLConfig" c:type="GdkGLConfig*"/>
+        </return-value>
+      </method>
+      <method name="get_share_list"
+              c:identifier="gdk_gl_context_get_share_list">
+        <return-value transfer-ownership="full">
+          <type name="GLContext" c:type="GdkGLContext*"/>
+        </return-value>
+      </method>
+      <method name="is_direct" c:identifier="gdk_gl_context_is_direct">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_render_type"
+              c:identifier="gdk_gl_context_get_render_type">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+    </class>
+    <record name="GLContextClass"
+            c:type="GdkGLContextClass"
+            glib:is-gtype-struct-for="GLContext">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+    </record>
+    <bitfield name="GLDebugFlag" 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="GLDrawable"
+               c:type="GdkGLDrawable"
+               glib:type-name="GdkGLDrawable"
+               glib:get-type="gdk_gl_drawable_get_type"
+               glib:type-struct="GLDrawableClass">
+      <virtual-method name="create_new_context">
+        <return-value transfer-ownership="full">
+          <type name="GLContext" c:type="GdkGLContext*"/>
+        </return-value>
+        <parameters>
+          <parameter name="share_list" transfer-ownership="none">
+            <type name="GLContext" c:type="GdkGLContext*"/>
+          </parameter>
+          <parameter name="direct" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="render_type" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="make_context_current">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="read" transfer-ownership="none">
+            <type name="GLDrawable" c:type="GdkGLDrawable*"/>
+          </parameter>
+          <parameter name="glcontext" transfer-ownership="none">
+            <type name="GLContext" c:type="GdkGLContext*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="is_double_buffered" invoker="is_double_buffered">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="swap_buffers" invoker="swap_buffers">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="wait_gl" invoker="wait_gl">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="wait_gdk" invoker="wait_gdk">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="gl_begin">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="read" transfer-ownership="none">
+            <type name="GLDrawable" c:type="GdkGLDrawable*"/>
+          </parameter>
+          <parameter name="glcontext" transfer-ownership="none">
+            <type name="GLContext" c:type="GdkGLContext*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="gl_end" invoker="gl_end">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_gl_config" invoker="get_gl_config">
+        <return-value transfer-ownership="full">
+          <type name="GLConfig" c:type="GdkGLConfig*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_size" invoker="get_size">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </virtual-method>
+      <method name="make_current" c:identifier="gdk_gl_drawable_make_current">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="glcontext" transfer-ownership="none">
+            <type name="GLContext" c:type="GdkGLContext*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_double_buffered"
+              c:identifier="gdk_gl_drawable_is_double_buffered">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="swap_buffers" c:identifier="gdk_gl_drawable_swap_buffers">
+        <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">
+        <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">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="gl_begin" c:identifier="gdk_gl_drawable_gl_begin">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="glcontext" transfer-ownership="none">
+            <type name="GLContext" c:type="GdkGLContext*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="gl_end" c:identifier="gdk_gl_drawable_gl_end">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_gl_config"
+              c:identifier="gdk_gl_drawable_get_gl_config">
+        <return-value transfer-ownership="full">
+          <type name="GLConfig" c:type="GdkGLConfig*"/>
+        </return-value>
+      </method>
+      <method name="get_size" c:identifier="gdk_gl_drawable_get_size">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+    </interface>
+    <enumeration name="GLDrawableAttrib"
+                 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="GLDrawableClass"
+            c:type="GdkGLDrawableClass"
+            glib:is-gtype-struct-for="GLDrawable">
+      <field name="base_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="create_new_context">
+        <callback name="create_new_context" c:type="create_new_context">
+          <return-value transfer-ownership="full">
+            <type name="GLContext" c:type="GdkGLContext*"/>
+          </return-value>
+          <parameters>
+            <parameter name="gldrawable" transfer-ownership="none">
+              <type name="GLDrawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+            <parameter name="share_list" transfer-ownership="none">
+              <type name="GLContext" c:type="GdkGLContext*"/>
+            </parameter>
+            <parameter name="direct" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="render_type" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="make_context_current">
+        <callback name="make_context_current" c:type="make_context_current">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="draw" transfer-ownership="none">
+              <type name="GLDrawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+            <parameter name="read" transfer-ownership="none">
+              <type name="GLDrawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+            <parameter name="glcontext" transfer-ownership="none">
+              <type name="GLContext" c:type="GdkGLContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_double_buffered">
+        <callback name="is_double_buffered" c:type="is_double_buffered">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="gldrawable" transfer-ownership="none">
+              <type name="GLDrawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="swap_buffers">
+        <callback name="swap_buffers" c:type="swap_buffers">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="gldrawable" transfer-ownership="none">
+              <type name="GLDrawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="wait_gl">
+        <callback name="wait_gl" c:type="wait_gl">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="gldrawable" transfer-ownership="none">
+              <type name="GLDrawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="wait_gdk">
+        <callback name="wait_gdk" c:type="wait_gdk">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="gldrawable" transfer-ownership="none">
+              <type name="GLDrawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gl_begin">
+        <callback name="gl_begin" c:type="gl_begin">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="draw" transfer-ownership="none">
+              <type name="GLDrawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+            <parameter name="read" transfer-ownership="none">
+              <type name="GLDrawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+            <parameter name="glcontext" transfer-ownership="none">
+              <type name="GLContext" c:type="GdkGLContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gl_end">
+        <callback name="gl_end" c:type="gl_end">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="gldrawable" transfer-ownership="none">
+              <type name="GLDrawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_gl_config">
+        <callback name="get_gl_config" c:type="get_gl_config">
+          <return-value transfer-ownership="full">
+            <type name="GLConfig" c:type="GdkGLConfig*"/>
+          </return-value>
+          <parameters>
+            <parameter name="gldrawable" transfer-ownership="none">
+              <type name="GLDrawable" c:type="GdkGLDrawable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_size">
+        <callback name="get_size" c:type="get_size">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="gldrawable" transfer-ownership="none">
+              <type name="GLDrawable" c:type="GdkGLDrawable*"/>
+            </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>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="GLDrawableType"
+                 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="GLDrawableTypeMask"
+              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="GLEventMask"
+              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="GLEventType"
+                 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>
+    <enumeration name="GLPbufferAttrib"
+                 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="GLPixmap"
+           c:type="GdkGLPixmap"
+           parent="Gdk.Drawable"
+           glib:type-name="GdkGLPixmap"
+           glib:get-type="gdk_gl_pixmap_get_type"
+           glib:type-struct="GLPixmapClass">
+      <constructor name="new" c:identifier="gdk_gl_pixmap_new">
+        <return-value transfer-ownership="full">
+          <type name="GLPixmap" c:type="GdkGLPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="glconfig" transfer-ownership="none">
+            <type name="GLConfig" c:type="GdkGLConfig*"/>
+          </parameter>
+          <parameter name="pixmap" transfer-ownership="none">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="attrib_list"
+                     direction="out"
+                     transfer-ownership="none">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="destroy" c:identifier="gdk_gl_pixmap_destroy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_pixmap" c:identifier="gdk_gl_pixmap_get_pixmap">
+        <return-value transfer-ownership="full">
+          <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="GLPixmapClass"
+            c:type="GdkGLPixmapClass"
+            glib:is-gtype-struct-for="GLPixmap">
+      <field name="parent_class">
+        <type name="Gdk.DrawableClass" c:type="GdkDrawableClass"/>
+      </field>
+    </record>
+    <callback name="GLProc" c:type="GdkGLProc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <enumeration name="GLRenderType"
+                 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="GLRenderTypeMask"
+              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>
+    <enumeration name="GLTransparentType"
+                 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="GLVisualType"
+                 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="GLWindow"
+           c:type="GdkGLWindow"
+           parent="Gdk.Drawable"
+           glib:type-name="GdkGLWindow"
+           glib:get-type="gdk_gl_window_get_type"
+           glib:type-struct="GLWindowClass">
+      <constructor name="new" c:identifier="gdk_gl_window_new">
+        <return-value transfer-ownership="full">
+          <type name="GLWindow" c:type="GdkGLWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="glconfig" transfer-ownership="none">
+            <type name="GLConfig" c:type="GdkGLConfig*"/>
+          </parameter>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+          <parameter name="attrib_list"
+                     direction="out"
+                     transfer-ownership="none">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="destroy" c:identifier="gdk_gl_window_destroy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_window" c:identifier="gdk_gl_window_get_window">
+        <return-value transfer-ownership="full">
+          <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="GLWindowClass"
+            c:type="GdkGLWindowClass"
+            glib:is-gtype-struct-for="GLWindow">
+      <field name="parent_class">
+        <type name="Gdk.DrawableClass" c:type="GdkDrawableClass"/>
+      </field>
+    </record>
+    <constant name="GL_ATTRIB_LIST_NONE" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="GL_DONT_CARE" value="-1">
+      <type name="int"/>
+    </constant>
+    <record name="GL_GL_3DFX_tbuffer" c:type="GdkGL_GL_3DFX_tbuffer">
+      <field name="glTbufferMask3DFX" writable="1">
+        <type name="GdkGLProc_glTbufferMask3DFX"
+              c:type="GdkGLProc_glTbufferMask3DFX"/>
+      </field>
+    </record>
+    <record name="GL_GL_APPLE_element_array"
+            c:type="GdkGL_GL_APPLE_element_array">
+      <field name="glElementPointerAPPLE" writable="1">
+        <type name="GdkGLProc_glElementPointerAPPLE"
+              c:type="GdkGLProc_glElementPointerAPPLE"/>
+      </field>
+      <field name="glDrawElementArrayAPPLE" writable="1">
+        <type name="GdkGLProc_glDrawElementArrayAPPLE"
+              c:type="GdkGLProc_glDrawElementArrayAPPLE"/>
+      </field>
+      <field name="glDrawRangeElementArrayAPPLE" writable="1">
+        <type name="GdkGLProc_glDrawRangeElementArrayAPPLE"
+              c:type="GdkGLProc_glDrawRangeElementArrayAPPLE"/>
+      </field>
+      <field name="glMultiDrawElementArrayAPPLE" writable="1">
+        <type name="GdkGLProc_glMultiDrawElementArrayAPPLE"
+              c:type="GdkGLProc_glMultiDrawElementArrayAPPLE"/>
+      </field>
+      <field name="glMultiDrawRangeElementArrayAPPLE" writable="1">
+        <type name="GdkGLProc_glMultiDrawRangeElementArrayAPPLE"
+              c:type="GdkGLProc_glMultiDrawRangeElementArrayAPPLE"/>
+      </field>
+    </record>
+    <record name="GL_GL_APPLE_fence" c:type="GdkGL_GL_APPLE_fence">
+      <field name="glGenFencesAPPLE" writable="1">
+        <type name="GdkGLProc_glGenFencesAPPLE"
+              c:type="GdkGLProc_glGenFencesAPPLE"/>
+      </field>
+      <field name="glDeleteFencesAPPLE" writable="1">
+        <type name="GdkGLProc_glDeleteFencesAPPLE"
+              c:type="GdkGLProc_glDeleteFencesAPPLE"/>
+      </field>
+      <field name="glSetFenceAPPLE" writable="1">
+        <type name="GdkGLProc_glSetFenceAPPLE"
+              c:type="GdkGLProc_glSetFenceAPPLE"/>
+      </field>
+      <field name="glIsFenceAPPLE" writable="1">
+        <type name="GdkGLProc_glIsFenceAPPLE"
+              c:type="GdkGLProc_glIsFenceAPPLE"/>
+      </field>
+      <field name="glTestFenceAPPLE" writable="1">
+        <type name="GdkGLProc_glTestFenceAPPLE"
+              c:type="GdkGLProc_glTestFenceAPPLE"/>
+      </field>
+      <field name="glFinishFenceAPPLE" writable="1">
+        <type name="GdkGLProc_glFinishFenceAPPLE"
+              c:type="GdkGLProc_glFinishFenceAPPLE"/>
+      </field>
+      <field name="glTestObjectAPPLE" writable="1">
+        <type name="GdkGLProc_glTestObjectAPPLE"
+              c:type="GdkGLProc_glTestObjectAPPLE"/>
+      </field>
+      <field name="glFinishObjectAPPLE" writable="1">
+        <type name="GdkGLProc_glFinishObjectAPPLE"
+              c:type="GdkGLProc_glFinishObjectAPPLE"/>
+      </field>
+    </record>
+    <record name="GL_GL_APPLE_texture_range"
+            c:type="GdkGL_GL_APPLE_texture_range">
+      <field name="glTextureRangeAPPLE" writable="1">
+        <type name="GdkGLProc_glTextureRangeAPPLE"
+              c:type="GdkGLProc_glTextureRangeAPPLE"/>
+      </field>
+      <field name="glGetTexParameterPointervAPPLE" writable="1">
+        <type name="GdkGLProc_glGetTexParameterPointervAPPLE"
+              c:type="GdkGLProc_glGetTexParameterPointervAPPLE"/>
+      </field>
+    </record>
+    <record name="GL_GL_APPLE_vertex_array_object"
+            c:type="GdkGL_GL_APPLE_vertex_array_object">
+      <field name="glBindVertexArrayAPPLE" writable="1">
+        <type name="GdkGLProc_glBindVertexArrayAPPLE"
+              c:type="GdkGLProc_glBindVertexArrayAPPLE"/>
+      </field>
+      <field name="glDeleteVertexArraysAPPLE" writable="1">
+        <type name="GdkGLProc_glDeleteVertexArraysAPPLE"
+              c:type="GdkGLProc_glDeleteVertexArraysAPPLE"/>
+      </field>
+      <field name="glGenVertexArraysAPPLE" writable="1">
+        <type name="GdkGLProc_glGenVertexArraysAPPLE"
+              c:type="GdkGLProc_glGenVertexArraysAPPLE"/>
+      </field>
+      <field name="glIsVertexArrayAPPLE" writable="1">
+        <type name="GdkGLProc_glIsVertexArrayAPPLE"
+              c:type="GdkGLProc_glIsVertexArrayAPPLE"/>
+      </field>
+    </record>
+    <record name="GL_GL_APPLE_vertex_array_range"
+            c:type="GdkGL_GL_APPLE_vertex_array_range">
+      <field name="glVertexArrayRangeAPPLE" writable="1">
+        <type name="GdkGLProc_glVertexArrayRangeAPPLE"
+              c:type="GdkGLProc_glVertexArrayRangeAPPLE"/>
+      </field>
+      <field name="glFlushVertexArrayRangeAPPLE" writable="1">
+        <type name="GdkGLProc_glFlushVertexArrayRangeAPPLE"
+              c:type="GdkGLProc_glFlushVertexArrayRangeAPPLE"/>
+      </field>
+      <field name="glVertexArrayParameteriAPPLE" writable="1">
+        <type name="GdkGLProc_glVertexArrayParameteriAPPLE"
+              c:type="GdkGLProc_glVertexArrayParameteriAPPLE"/>
+      </field>
+    </record>
+    <record name="GL_GL_APPLE_vertex_program_evaluators"
+            c:type="GdkGL_GL_APPLE_vertex_program_evaluators">
+      <field name="glEnableVertexAttribAPPLE" writable="1">
+        <type name="GdkGLProc_glEnableVertexAttribAPPLE"
+              c:type="GdkGLProc_glEnableVertexAttribAPPLE"/>
+      </field>
+      <field name="glDisableVertexAttribAPPLE" writable="1">
+        <type name="GdkGLProc_glDisableVertexAttribAPPLE"
+              c:type="GdkGLProc_glDisableVertexAttribAPPLE"/>
+      </field>
+      <field name="glIsVertexAttribEnabledAPPLE" writable="1">
+        <type name="GdkGLProc_glIsVertexAttribEnabledAPPLE"
+              c:type="GdkGLProc_glIsVertexAttribEnabledAPPLE"/>
+      </field>
+      <field name="glMapVertexAttrib1dAPPLE" writable="1">
+        <type name="GdkGLProc_glMapVertexAttrib1dAPPLE"
+              c:type="GdkGLProc_glMapVertexAttrib1dAPPLE"/>
+      </field>
+      <field name="glMapVertexAttrib1fAPPLE" writable="1">
+        <type name="GdkGLProc_glMapVertexAttrib1fAPPLE"
+              c:type="GdkGLProc_glMapVertexAttrib1fAPPLE"/>
+      </field>
+      <field name="glMapVertexAttrib2dAPPLE" writable="1">
+        <type name="GdkGLProc_glMapVertexAttrib2dAPPLE"
+              c:type="GdkGLProc_glMapVertexAttrib2dAPPLE"/>
+      </field>
+      <field name="glMapVertexAttrib2fAPPLE" writable="1">
+        <type name="GdkGLProc_glMapVertexAttrib2fAPPLE"
+              c:type="GdkGLProc_glMapVertexAttrib2fAPPLE"/>
+      </field>
+    </record>
+    <record name="GL_GL_ARB_matrix_palette"
+            c:type="GdkGL_GL_ARB_matrix_palette">
+      <field name="glCurrentPaletteMatrixARB" writable="1">
+        <type name="GdkGLProc_glCurrentPaletteMatrixARB"
+              c:type="GdkGLProc_glCurrentPaletteMatrixARB"/>
+      </field>
+      <field name="glMatrixIndexubvARB" writable="1">
+        <type name="GdkGLProc_glMatrixIndexubvARB"
+              c:type="GdkGLProc_glMatrixIndexubvARB"/>
+      </field>
+      <field name="glMatrixIndexusvARB" writable="1">
+        <type name="GdkGLProc_glMatrixIndexusvARB"
+              c:type="GdkGLProc_glMatrixIndexusvARB"/>
+      </field>
+      <field name="glMatrixIndexuivARB" writable="1">
+        <type name="GdkGLProc_glMatrixIndexuivARB"
+              c:type="GdkGLProc_glMatrixIndexuivARB"/>
+      </field>
+      <field name="glMatrixIndexPointerARB" writable="1">
+        <type name="GdkGLProc_glMatrixIndexPointerARB"
+              c:type="GdkGLProc_glMatrixIndexPointerARB"/>
+      </field>
+    </record>
+    <record name="GL_GL_ARB_multisample" c:type="GdkGL_GL_ARB_multisample">
+      <field name="glSampleCoverageARB" writable="1">
+        <type name="GdkGLProc_glSampleCoverageARB"
+              c:type="GdkGLProc_glSampleCoverageARB"/>
+      </field>
+    </record>
+    <record name="GL_GL_ARB_multitexture" c:type="GdkGL_GL_ARB_multitexture">
+      <field name="glActiveTextureARB" writable="1">
+        <type name="GdkGLProc_glActiveTextureARB"
+              c:type="GdkGLProc_glActiveTextureARB"/>
+      </field>
+      <field name="glClientActiveTextureARB" writable="1">
+        <type name="GdkGLProc_glClientActiveTextureARB"
+              c:type="GdkGLProc_glClientActiveTextureARB"/>
+      </field>
+      <field name="glMultiTexCoord1dARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1dARB"
+              c:type="GdkGLProc_glMultiTexCoord1dARB"/>
+      </field>
+      <field name="glMultiTexCoord1dvARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1dvARB"
+              c:type="GdkGLProc_glMultiTexCoord1dvARB"/>
+      </field>
+      <field name="glMultiTexCoord1fARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1fARB"
+              c:type="GdkGLProc_glMultiTexCoord1fARB"/>
+      </field>
+      <field name="glMultiTexCoord1fvARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1fvARB"
+              c:type="GdkGLProc_glMultiTexCoord1fvARB"/>
+      </field>
+      <field name="glMultiTexCoord1iARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1iARB"
+              c:type="GdkGLProc_glMultiTexCoord1iARB"/>
+      </field>
+      <field name="glMultiTexCoord1ivARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1ivARB"
+              c:type="GdkGLProc_glMultiTexCoord1ivARB"/>
+      </field>
+      <field name="glMultiTexCoord1sARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1sARB"
+              c:type="GdkGLProc_glMultiTexCoord1sARB"/>
+      </field>
+      <field name="glMultiTexCoord1svARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1svARB"
+              c:type="GdkGLProc_glMultiTexCoord1svARB"/>
+      </field>
+      <field name="glMultiTexCoord2dARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2dARB"
+              c:type="GdkGLProc_glMultiTexCoord2dARB"/>
+      </field>
+      <field name="glMultiTexCoord2dvARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2dvARB"
+              c:type="GdkGLProc_glMultiTexCoord2dvARB"/>
+      </field>
+      <field name="glMultiTexCoord2fARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2fARB"
+              c:type="GdkGLProc_glMultiTexCoord2fARB"/>
+      </field>
+      <field name="glMultiTexCoord2fvARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2fvARB"
+              c:type="GdkGLProc_glMultiTexCoord2fvARB"/>
+      </field>
+      <field name="glMultiTexCoord2iARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2iARB"
+              c:type="GdkGLProc_glMultiTexCoord2iARB"/>
+      </field>
+      <field name="glMultiTexCoord2ivARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2ivARB"
+              c:type="GdkGLProc_glMultiTexCoord2ivARB"/>
+      </field>
+      <field name="glMultiTexCoord2sARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2sARB"
+              c:type="GdkGLProc_glMultiTexCoord2sARB"/>
+      </field>
+      <field name="glMultiTexCoord2svARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2svARB"
+              c:type="GdkGLProc_glMultiTexCoord2svARB"/>
+      </field>
+      <field name="glMultiTexCoord3dARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3dARB"
+              c:type="GdkGLProc_glMultiTexCoord3dARB"/>
+      </field>
+      <field name="glMultiTexCoord3dvARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3dvARB"
+              c:type="GdkGLProc_glMultiTexCoord3dvARB"/>
+      </field>
+      <field name="glMultiTexCoord3fARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3fARB"
+              c:type="GdkGLProc_glMultiTexCoord3fARB"/>
+      </field>
+      <field name="glMultiTexCoord3fvARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3fvARB"
+              c:type="GdkGLProc_glMultiTexCoord3fvARB"/>
+      </field>
+      <field name="glMultiTexCoord3iARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3iARB"
+              c:type="GdkGLProc_glMultiTexCoord3iARB"/>
+      </field>
+      <field name="glMultiTexCoord3ivARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3ivARB"
+              c:type="GdkGLProc_glMultiTexCoord3ivARB"/>
+      </field>
+      <field name="glMultiTexCoord3sARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3sARB"
+              c:type="GdkGLProc_glMultiTexCoord3sARB"/>
+      </field>
+      <field name="glMultiTexCoord3svARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3svARB"
+              c:type="GdkGLProc_glMultiTexCoord3svARB"/>
+      </field>
+      <field name="glMultiTexCoord4dARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4dARB"
+              c:type="GdkGLProc_glMultiTexCoord4dARB"/>
+      </field>
+      <field name="glMultiTexCoord4dvARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4dvARB"
+              c:type="GdkGLProc_glMultiTexCoord4dvARB"/>
+      </field>
+      <field name="glMultiTexCoord4fARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4fARB"
+              c:type="GdkGLProc_glMultiTexCoord4fARB"/>
+      </field>
+      <field name="glMultiTexCoord4fvARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4fvARB"
+              c:type="GdkGLProc_glMultiTexCoord4fvARB"/>
+      </field>
+      <field name="glMultiTexCoord4iARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4iARB"
+              c:type="GdkGLProc_glMultiTexCoord4iARB"/>
+      </field>
+      <field name="glMultiTexCoord4ivARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4ivARB"
+              c:type="GdkGLProc_glMultiTexCoord4ivARB"/>
+      </field>
+      <field name="glMultiTexCoord4sARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4sARB"
+              c:type="GdkGLProc_glMultiTexCoord4sARB"/>
+      </field>
+      <field name="glMultiTexCoord4svARB" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4svARB"
+              c:type="GdkGLProc_glMultiTexCoord4svARB"/>
+      </field>
+    </record>
+    <record name="GL_GL_ARB_point_parameters"
+            c:type="GdkGL_GL_ARB_point_parameters">
+      <field name="glPointParameterfARB" writable="1">
+        <type name="GdkGLProc_glPointParameterfARB"
+              c:type="GdkGLProc_glPointParameterfARB"/>
+      </field>
+      <field name="glPointParameterfvARB" writable="1">
+        <type name="GdkGLProc_glPointParameterfvARB"
+              c:type="GdkGLProc_glPointParameterfvARB"/>
+      </field>
+    </record>
+    <record name="GL_GL_ARB_texture_compression"
+            c:type="GdkGL_GL_ARB_texture_compression">
+      <field name="glCompressedTexImage3DARB" writable="1">
+        <type name="GdkGLProc_glCompressedTexImage3DARB"
+              c:type="GdkGLProc_glCompressedTexImage3DARB"/>
+      </field>
+      <field name="glCompressedTexImage2DARB" writable="1">
+        <type name="GdkGLProc_glCompressedTexImage2DARB"
+              c:type="GdkGLProc_glCompressedTexImage2DARB"/>
+      </field>
+      <field name="glCompressedTexImage1DARB" writable="1">
+        <type name="GdkGLProc_glCompressedTexImage1DARB"
+              c:type="GdkGLProc_glCompressedTexImage1DARB"/>
+      </field>
+      <field name="glCompressedTexSubImage3DARB" writable="1">
+        <type name="GdkGLProc_glCompressedTexSubImage3DARB"
+              c:type="GdkGLProc_glCompressedTexSubImage3DARB"/>
+      </field>
+      <field name="glCompressedTexSubImage2DARB" writable="1">
+        <type name="GdkGLProc_glCompressedTexSubImage2DARB"
+              c:type="GdkGLProc_glCompressedTexSubImage2DARB"/>
+      </field>
+      <field name="glCompressedTexSubImage1DARB" writable="1">
+        <type name="GdkGLProc_glCompressedTexSubImage1DARB"
+              c:type="GdkGLProc_glCompressedTexSubImage1DARB"/>
+      </field>
+      <field name="glGetCompressedTexImageARB" writable="1">
+        <type name="GdkGLProc_glGetCompressedTexImageARB"
+              c:type="GdkGLProc_glGetCompressedTexImageARB"/>
+      </field>
+    </record>
+    <record name="GL_GL_ARB_transpose_matrix"
+            c:type="GdkGL_GL_ARB_transpose_matrix">
+      <field name="glLoadTransposeMatrixfARB" writable="1">
+        <type name="GdkGLProc_glLoadTransposeMatrixfARB"
+              c:type="GdkGLProc_glLoadTransposeMatrixfARB"/>
+      </field>
+      <field name="glLoadTransposeMatrixdARB" writable="1">
+        <type name="GdkGLProc_glLoadTransposeMatrixdARB"
+              c:type="GdkGLProc_glLoadTransposeMatrixdARB"/>
+      </field>
+      <field name="glMultTransposeMatrixfARB" writable="1">
+        <type name="GdkGLProc_glMultTransposeMatrixfARB"
+              c:type="GdkGLProc_glMultTransposeMatrixfARB"/>
+      </field>
+      <field name="glMultTransposeMatrixdARB" writable="1">
+        <type name="GdkGLProc_glMultTransposeMatrixdARB"
+              c:type="GdkGLProc_glMultTransposeMatrixdARB"/>
+      </field>
+    </record>
+    <record name="GL_GL_ARB_vertex_blend" c:type="GdkGL_GL_ARB_vertex_blend">
+      <field name="glWeightbvARB" writable="1">
+        <type name="GdkGLProc_glWeightbvARB" c:type="GdkGLProc_glWeightbvARB"/>
+      </field>
+      <field name="glWeightsvARB" writable="1">
+        <type name="GdkGLProc_glWeightsvARB" c:type="GdkGLProc_glWeightsvARB"/>
+      </field>
+      <field name="glWeightivARB" writable="1">
+        <type name="GdkGLProc_glWeightivARB" c:type="GdkGLProc_glWeightivARB"/>
+      </field>
+      <field name="glWeightfvARB" writable="1">
+        <type name="GdkGLProc_glWeightfvARB" c:type="GdkGLProc_glWeightfvARB"/>
+      </field>
+      <field name="glWeightdvARB" writable="1">
+        <type name="GdkGLProc_glWeightdvARB" c:type="GdkGLProc_glWeightdvARB"/>
+      </field>
+      <field name="glWeightubvARB" writable="1">
+        <type name="GdkGLProc_glWeightubvARB"
+              c:type="GdkGLProc_glWeightubvARB"/>
+      </field>
+      <field name="glWeightusvARB" writable="1">
+        <type name="GdkGLProc_glWeightusvARB"
+              c:type="GdkGLProc_glWeightusvARB"/>
+      </field>
+      <field name="glWeightuivARB" writable="1">
+        <type name="GdkGLProc_glWeightuivARB"
+              c:type="GdkGLProc_glWeightuivARB"/>
+      </field>
+      <field name="glWeightPointerARB" writable="1">
+        <type name="GdkGLProc_glWeightPointerARB"
+              c:type="GdkGLProc_glWeightPointerARB"/>
+      </field>
+      <field name="glVertexBlendARB" writable="1">
+        <type name="GdkGLProc_glVertexBlendARB"
+              c:type="GdkGLProc_glVertexBlendARB"/>
+      </field>
+    </record>
+    <record name="GL_GL_ARB_vertex_buffer_object"
+            c:type="GdkGL_GL_ARB_vertex_buffer_object">
+      <field name="glBindBufferARB" writable="1">
+        <type name="GdkGLProc_glBindBufferARB"
+              c:type="GdkGLProc_glBindBufferARB"/>
+      </field>
+      <field name="glDeleteBuffersARB" writable="1">
+        <type name="GdkGLProc_glDeleteBuffersARB"
+              c:type="GdkGLProc_glDeleteBuffersARB"/>
+      </field>
+      <field name="glGenBuffersARB" writable="1">
+        <type name="GdkGLProc_glGenBuffersARB"
+              c:type="GdkGLProc_glGenBuffersARB"/>
+      </field>
+      <field name="glIsBufferARB" writable="1">
+        <type name="GdkGLProc_glIsBufferARB" c:type="GdkGLProc_glIsBufferARB"/>
+      </field>
+      <field name="glBufferDataARB" writable="1">
+        <type name="GdkGLProc_glBufferDataARB"
+              c:type="GdkGLProc_glBufferDataARB"/>
+      </field>
+      <field name="glBufferSubDataARB" writable="1">
+        <type name="GdkGLProc_glBufferSubDataARB"
+              c:type="GdkGLProc_glBufferSubDataARB"/>
+      </field>
+      <field name="glGetBufferSubDataARB" writable="1">
+        <type name="GdkGLProc_glGetBufferSubDataARB"
+              c:type="GdkGLProc_glGetBufferSubDataARB"/>
+      </field>
+      <field name="glMapBufferARB" writable="1">
+        <type name="GdkGLProc_glMapBufferARB"
+              c:type="GdkGLProc_glMapBufferARB"/>
+      </field>
+      <field name="glUnmapBufferARB" writable="1">
+        <type name="GdkGLProc_glUnmapBufferARB"
+              c:type="GdkGLProc_glUnmapBufferARB"/>
+      </field>
+      <field name="glGetBufferParameterivARB" writable="1">
+        <type name="GdkGLProc_glGetBufferParameterivARB"
+              c:type="GdkGLProc_glGetBufferParameterivARB"/>
+      </field>
+      <field name="glGetBufferPointervARB" writable="1">
+        <type name="GdkGLProc_glGetBufferPointervARB"
+              c:type="GdkGLProc_glGetBufferPointervARB"/>
+      </field>
+    </record>
+    <record name="GL_GL_ARB_vertex_program"
+            c:type="GdkGL_GL_ARB_vertex_program">
+      <field name="glVertexAttrib1dARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib1dARB"
+              c:type="GdkGLProc_glVertexAttrib1dARB"/>
+      </field>
+      <field name="glVertexAttrib1dvARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib1dvARB"
+              c:type="GdkGLProc_glVertexAttrib1dvARB"/>
+      </field>
+      <field name="glVertexAttrib1fARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib1fARB"
+              c:type="GdkGLProc_glVertexAttrib1fARB"/>
+      </field>
+      <field name="glVertexAttrib1fvARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib1fvARB"
+              c:type="GdkGLProc_glVertexAttrib1fvARB"/>
+      </field>
+      <field name="glVertexAttrib1sARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib1sARB"
+              c:type="GdkGLProc_glVertexAttrib1sARB"/>
+      </field>
+      <field name="glVertexAttrib1svARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib1svARB"
+              c:type="GdkGLProc_glVertexAttrib1svARB"/>
+      </field>
+      <field name="glVertexAttrib2dARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib2dARB"
+              c:type="GdkGLProc_glVertexAttrib2dARB"/>
+      </field>
+      <field name="glVertexAttrib2dvARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib2dvARB"
+              c:type="GdkGLProc_glVertexAttrib2dvARB"/>
+      </field>
+      <field name="glVertexAttrib2fARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib2fARB"
+              c:type="GdkGLProc_glVertexAttrib2fARB"/>
+      </field>
+      <field name="glVertexAttrib2fvARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib2fvARB"
+              c:type="GdkGLProc_glVertexAttrib2fvARB"/>
+      </field>
+      <field name="glVertexAttrib2sARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib2sARB"
+              c:type="GdkGLProc_glVertexAttrib2sARB"/>
+      </field>
+      <field name="glVertexAttrib2svARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib2svARB"
+              c:type="GdkGLProc_glVertexAttrib2svARB"/>
+      </field>
+      <field name="glVertexAttrib3dARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib3dARB"
+              c:type="GdkGLProc_glVertexAttrib3dARB"/>
+      </field>
+      <field name="glVertexAttrib3dvARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib3dvARB"
+              c:type="GdkGLProc_glVertexAttrib3dvARB"/>
+      </field>
+      <field name="glVertexAttrib3fARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib3fARB"
+              c:type="GdkGLProc_glVertexAttrib3fARB"/>
+      </field>
+      <field name="glVertexAttrib3fvARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib3fvARB"
+              c:type="GdkGLProc_glVertexAttrib3fvARB"/>
+      </field>
+      <field name="glVertexAttrib3sARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib3sARB"
+              c:type="GdkGLProc_glVertexAttrib3sARB"/>
+      </field>
+      <field name="glVertexAttrib3svARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib3svARB"
+              c:type="GdkGLProc_glVertexAttrib3svARB"/>
+      </field>
+      <field name="glVertexAttrib4NbvARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4NbvARB"
+              c:type="GdkGLProc_glVertexAttrib4NbvARB"/>
+      </field>
+      <field name="glVertexAttrib4NivARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4NivARB"
+              c:type="GdkGLProc_glVertexAttrib4NivARB"/>
+      </field>
+      <field name="glVertexAttrib4NsvARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4NsvARB"
+              c:type="GdkGLProc_glVertexAttrib4NsvARB"/>
+      </field>
+      <field name="glVertexAttrib4NubARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4NubARB"
+              c:type="GdkGLProc_glVertexAttrib4NubARB"/>
+      </field>
+      <field name="glVertexAttrib4NubvARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4NubvARB"
+              c:type="GdkGLProc_glVertexAttrib4NubvARB"/>
+      </field>
+      <field name="glVertexAttrib4NuivARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4NuivARB"
+              c:type="GdkGLProc_glVertexAttrib4NuivARB"/>
+      </field>
+      <field name="glVertexAttrib4NusvARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4NusvARB"
+              c:type="GdkGLProc_glVertexAttrib4NusvARB"/>
+      </field>
+      <field name="glVertexAttrib4bvARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4bvARB"
+              c:type="GdkGLProc_glVertexAttrib4bvARB"/>
+      </field>
+      <field name="glVertexAttrib4dARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4dARB"
+              c:type="GdkGLProc_glVertexAttrib4dARB"/>
+      </field>
+      <field name="glVertexAttrib4dvARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4dvARB"
+              c:type="GdkGLProc_glVertexAttrib4dvARB"/>
+      </field>
+      <field name="glVertexAttrib4fARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4fARB"
+              c:type="GdkGLProc_glVertexAttrib4fARB"/>
+      </field>
+      <field name="glVertexAttrib4fvARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4fvARB"
+              c:type="GdkGLProc_glVertexAttrib4fvARB"/>
+      </field>
+      <field name="glVertexAttrib4ivARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4ivARB"
+              c:type="GdkGLProc_glVertexAttrib4ivARB"/>
+      </field>
+      <field name="glVertexAttrib4sARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4sARB"
+              c:type="GdkGLProc_glVertexAttrib4sARB"/>
+      </field>
+      <field name="glVertexAttrib4svARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4svARB"
+              c:type="GdkGLProc_glVertexAttrib4svARB"/>
+      </field>
+      <field name="glVertexAttrib4ubvARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4ubvARB"
+              c:type="GdkGLProc_glVertexAttrib4ubvARB"/>
+      </field>
+      <field name="glVertexAttrib4uivARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4uivARB"
+              c:type="GdkGLProc_glVertexAttrib4uivARB"/>
+      </field>
+      <field name="glVertexAttrib4usvARB" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4usvARB"
+              c:type="GdkGLProc_glVertexAttrib4usvARB"/>
+      </field>
+      <field name="glVertexAttribPointerARB" writable="1">
+        <type name="GdkGLProc_glVertexAttribPointerARB"
+              c:type="GdkGLProc_glVertexAttribPointerARB"/>
+      </field>
+      <field name="glEnableVertexAttribArrayARB" writable="1">
+        <type name="GdkGLProc_glEnableVertexAttribArrayARB"
+              c:type="GdkGLProc_glEnableVertexAttribArrayARB"/>
+      </field>
+      <field name="glDisableVertexAttribArrayARB" writable="1">
+        <type name="GdkGLProc_glDisableVertexAttribArrayARB"
+              c:type="GdkGLProc_glDisableVertexAttribArrayARB"/>
+      </field>
+      <field name="glProgramStringARB" writable="1">
+        <type name="GdkGLProc_glProgramStringARB"
+              c:type="GdkGLProc_glProgramStringARB"/>
+      </field>
+      <field name="glBindProgramARB" writable="1">
+        <type name="GdkGLProc_glBindProgramARB"
+              c:type="GdkGLProc_glBindProgramARB"/>
+      </field>
+      <field name="glDeleteProgramsARB" writable="1">
+        <type name="GdkGLProc_glDeleteProgramsARB"
+              c:type="GdkGLProc_glDeleteProgramsARB"/>
+      </field>
+      <field name="glGenProgramsARB" writable="1">
+        <type name="GdkGLProc_glGenProgramsARB"
+              c:type="GdkGLProc_glGenProgramsARB"/>
+      </field>
+      <field name="glProgramEnvParameter4dARB" writable="1">
+        <type name="GdkGLProc_glProgramEnvParameter4dARB"
+              c:type="GdkGLProc_glProgramEnvParameter4dARB"/>
+      </field>
+      <field name="glProgramEnvParameter4dvARB" writable="1">
+        <type name="GdkGLProc_glProgramEnvParameter4dvARB"
+              c:type="GdkGLProc_glProgramEnvParameter4dvARB"/>
+      </field>
+      <field name="glProgramEnvParameter4fARB" writable="1">
+        <type name="GdkGLProc_glProgramEnvParameter4fARB"
+              c:type="GdkGLProc_glProgramEnvParameter4fARB"/>
+      </field>
+      <field name="glProgramEnvParameter4fvARB" writable="1">
+        <type name="GdkGLProc_glProgramEnvParameter4fvARB"
+              c:type="GdkGLProc_glProgramEnvParameter4fvARB"/>
+      </field>
+      <field name="glProgramLocalParameter4dARB" writable="1">
+        <type name="GdkGLProc_glProgramLocalParameter4dARB"
+              c:type="GdkGLProc_glProgramLocalParameter4dARB"/>
+      </field>
+      <field name="glProgramLocalParameter4dvARB" writable="1">
+        <type name="GdkGLProc_glProgramLocalParameter4dvARB"
+              c:type="GdkGLProc_glProgramLocalParameter4dvARB"/>
+      </field>
+      <field name="glProgramLocalParameter4fARB" writable="1">
+        <type name="GdkGLProc_glProgramLocalParameter4fARB"
+              c:type="GdkGLProc_glProgramLocalParameter4fARB"/>
+      </field>
+      <field name="glProgramLocalParameter4fvARB" writable="1">
+        <type name="GdkGLProc_glProgramLocalParameter4fvARB"
+              c:type="GdkGLProc_glProgramLocalParameter4fvARB"/>
+      </field>
+      <field name="glGetProgramEnvParameterdvARB" writable="1">
+        <type name="GdkGLProc_glGetProgramEnvParameterdvARB"
+              c:type="GdkGLProc_glGetProgramEnvParameterdvARB"/>
+      </field>
+      <field name="glGetProgramEnvParameterfvARB" writable="1">
+        <type name="GdkGLProc_glGetProgramEnvParameterfvARB"
+              c:type="GdkGLProc_glGetProgramEnvParameterfvARB"/>
+      </field>
+      <field name="glGetProgramLocalParameterdvARB" writable="1">
+        <type name="GdkGLProc_glGetProgramLocalParameterdvARB"
+              c:type="GdkGLProc_glGetProgramLocalParameterdvARB"/>
+      </field>
+      <field name="glGetProgramLocalParameterfvARB" writable="1">
+        <type name="GdkGLProc_glGetProgramLocalParameterfvARB"
+              c:type="GdkGLProc_glGetProgramLocalParameterfvARB"/>
+      </field>
+      <field name="glGetProgramivARB" writable="1">
+        <type name="GdkGLProc_glGetProgramivARB"
+              c:type="GdkGLProc_glGetProgramivARB"/>
+      </field>
+      <field name="glGetProgramStringARB" writable="1">
+        <type name="GdkGLProc_glGetProgramStringARB"
+              c:type="GdkGLProc_glGetProgramStringARB"/>
+      </field>
+      <field name="glGetVertexAttribdvARB" writable="1">
+        <type name="GdkGLProc_glGetVertexAttribdvARB"
+              c:type="GdkGLProc_glGetVertexAttribdvARB"/>
+      </field>
+      <field name="glGetVertexAttribfvARB" writable="1">
+        <type name="GdkGLProc_glGetVertexAttribfvARB"
+              c:type="GdkGLProc_glGetVertexAttribfvARB"/>
+      </field>
+      <field name="glGetVertexAttribivARB" writable="1">
+        <type name="GdkGLProc_glGetVertexAttribivARB"
+              c:type="GdkGLProc_glGetVertexAttribivARB"/>
+      </field>
+      <field name="glGetVertexAttribPointervARB" writable="1">
+        <type name="GdkGLProc_glGetVertexAttribPointervARB"
+              c:type="GdkGLProc_glGetVertexAttribPointervARB"/>
+      </field>
+      <field name="glIsProgramARB" writable="1">
+        <type name="GdkGLProc_glIsProgramARB"
+              c:type="GdkGLProc_glIsProgramARB"/>
+      </field>
+    </record>
+    <record name="GL_GL_ARB_window_pos" c:type="GdkGL_GL_ARB_window_pos">
+      <field name="glWindowPos2dARB" writable="1">
+        <type name="GdkGLProc_glWindowPos2dARB"
+              c:type="GdkGLProc_glWindowPos2dARB"/>
+      </field>
+      <field name="glWindowPos2dvARB" writable="1">
+        <type name="GdkGLProc_glWindowPos2dvARB"
+              c:type="GdkGLProc_glWindowPos2dvARB"/>
+      </field>
+      <field name="glWindowPos2fARB" writable="1">
+        <type name="GdkGLProc_glWindowPos2fARB"
+              c:type="GdkGLProc_glWindowPos2fARB"/>
+      </field>
+      <field name="glWindowPos2fvARB" writable="1">
+        <type name="GdkGLProc_glWindowPos2fvARB"
+              c:type="GdkGLProc_glWindowPos2fvARB"/>
+      </field>
+      <field name="glWindowPos2iARB" writable="1">
+        <type name="GdkGLProc_glWindowPos2iARB"
+              c:type="GdkGLProc_glWindowPos2iARB"/>
+      </field>
+      <field name="glWindowPos2ivARB" writable="1">
+        <type name="GdkGLProc_glWindowPos2ivARB"
+              c:type="GdkGLProc_glWindowPos2ivARB"/>
+      </field>
+      <field name="glWindowPos2sARB" writable="1">
+        <type name="GdkGLProc_glWindowPos2sARB"
+              c:type="GdkGLProc_glWindowPos2sARB"/>
+      </field>
+      <field name="glWindowPos2svARB" writable="1">
+        <type name="GdkGLProc_glWindowPos2svARB"
+              c:type="GdkGLProc_glWindowPos2svARB"/>
+      </field>
+      <field name="glWindowPos3dARB" writable="1">
+        <type name="GdkGLProc_glWindowPos3dARB"
+              c:type="GdkGLProc_glWindowPos3dARB"/>
+      </field>
+      <field name="glWindowPos3dvARB" writable="1">
+        <type name="GdkGLProc_glWindowPos3dvARB"
+              c:type="GdkGLProc_glWindowPos3dvARB"/>
+      </field>
+      <field name="glWindowPos3fARB" writable="1">
+        <type name="GdkGLProc_glWindowPos3fARB"
+              c:type="GdkGLProc_glWindowPos3fARB"/>
+      </field>
+      <field name="glWindowPos3fvARB" writable="1">
+        <type name="GdkGLProc_glWindowPos3fvARB"
+              c:type="GdkGLProc_glWindowPos3fvARB"/>
+      </field>
+      <field name="glWindowPos3iARB" writable="1">
+        <type name="GdkGLProc_glWindowPos3iARB"
+              c:type="GdkGLProc_glWindowPos3iARB"/>
+      </field>
+      <field name="glWindowPos3ivARB" writable="1">
+        <type name="GdkGLProc_glWindowPos3ivARB"
+              c:type="GdkGLProc_glWindowPos3ivARB"/>
+      </field>
+      <field name="glWindowPos3sARB" writable="1">
+        <type name="GdkGLProc_glWindowPos3sARB"
+              c:type="GdkGLProc_glWindowPos3sARB"/>
+      </field>
+      <field name="glWindowPos3svARB" writable="1">
+        <type name="GdkGLProc_glWindowPos3svARB"
+              c:type="GdkGLProc_glWindowPos3svARB"/>
+      </field>
+    </record>
+    <record name="GL_GL_ATIX_pn_triangles" c:type="GdkGL_GL_ATIX_pn_triangles">
+      <field name="glPNTrianglesiATIX" writable="1">
+        <type name="GdkGLProc_glPNTrianglesiATIX"
+              c:type="GdkGLProc_glPNTrianglesiATIX"/>
+      </field>
+      <field name="glPNTrianglesfATIX" writable="1">
+        <type name="GdkGLProc_glPNTrianglesfATIX"
+              c:type="GdkGLProc_glPNTrianglesfATIX"/>
+      </field>
+    </record>
+    <record name="GL_GL_ATI_blend_equation_separate"
+            c:type="GdkGL_GL_ATI_blend_equation_separate">
+      <field name="glBlendEquationSeparateATI" writable="1">
+        <type name="GdkGLProc_glBlendEquationSeparateATI"
+              c:type="GdkGLProc_glBlendEquationSeparateATI"/>
+      </field>
+    </record>
+    <record name="GL_GL_ATI_draw_buffers" c:type="GdkGL_GL_ATI_draw_buffers">
+      <field name="glDrawBuffersATI" writable="1">
+        <type name="GdkGLProc_glDrawBuffersATI"
+              c:type="GdkGLProc_glDrawBuffersATI"/>
+      </field>
+    </record>
+    <record name="GL_GL_ATI_element_array" c:type="GdkGL_GL_ATI_element_array">
+      <field name="glElementPointerATI" writable="1">
+        <type name="GdkGLProc_glElementPointerATI"
+              c:type="GdkGLProc_glElementPointerATI"/>
+      </field>
+      <field name="glDrawElementArrayATI" writable="1">
+        <type name="GdkGLProc_glDrawElementArrayATI"
+              c:type="GdkGLProc_glDrawElementArrayATI"/>
+      </field>
+      <field name="glDrawRangeElementArrayATI" writable="1">
+        <type name="GdkGLProc_glDrawRangeElementArrayATI"
+              c:type="GdkGLProc_glDrawRangeElementArrayATI"/>
+      </field>
+    </record>
+    <record name="GL_GL_ATI_envmap_bumpmap"
+            c:type="GdkGL_GL_ATI_envmap_bumpmap">
+      <field name="glTexBumpParameterivATI" writable="1">
+        <type name="GdkGLProc_glTexBumpParameterivATI"
+              c:type="GdkGLProc_glTexBumpParameterivATI"/>
+      </field>
+      <field name="glTexBumpParameterfvATI" writable="1">
+        <type name="GdkGLProc_glTexBumpParameterfvATI"
+              c:type="GdkGLProc_glTexBumpParameterfvATI"/>
+      </field>
+      <field name="glGetTexBumpParameterivATI" writable="1">
+        <type name="GdkGLProc_glGetTexBumpParameterivATI"
+              c:type="GdkGLProc_glGetTexBumpParameterivATI"/>
+      </field>
+      <field name="glGetTexBumpParameterfvATI" writable="1">
+        <type name="GdkGLProc_glGetTexBumpParameterfvATI"
+              c:type="GdkGLProc_glGetTexBumpParameterfvATI"/>
+      </field>
+    </record>
+    <record name="GL_GL_ATI_fragment_shader"
+            c:type="GdkGL_GL_ATI_fragment_shader">
+      <field name="glGenFragmentShadersATI" writable="1">
+        <type name="GdkGLProc_glGenFragmentShadersATI"
+              c:type="GdkGLProc_glGenFragmentShadersATI"/>
+      </field>
+      <field name="glBindFragmentShaderATI" writable="1">
+        <type name="GdkGLProc_glBindFragmentShaderATI"
+              c:type="GdkGLProc_glBindFragmentShaderATI"/>
+      </field>
+      <field name="glDeleteFragmentShaderATI" writable="1">
+        <type name="GdkGLProc_glDeleteFragmentShaderATI"
+              c:type="GdkGLProc_glDeleteFragmentShaderATI"/>
+      </field>
+      <field name="glBeginFragmentShaderATI" writable="1">
+        <type name="GdkGLProc_glBeginFragmentShaderATI"
+              c:type="GdkGLProc_glBeginFragmentShaderATI"/>
+      </field>
+      <field name="glEndFragmentShaderATI" writable="1">
+        <type name="GdkGLProc_glEndFragmentShaderATI"
+              c:type="GdkGLProc_glEndFragmentShaderATI"/>
+      </field>
+      <field name="glPassTexCoordATI" writable="1">
+        <type name="GdkGLProc_glPassTexCoordATI"
+              c:type="GdkGLProc_glPassTexCoordATI"/>
+      </field>
+      <field name="glSampleMapATI" writable="1">
+        <type name="GdkGLProc_glSampleMapATI"
+              c:type="GdkGLProc_glSampleMapATI"/>
+      </field>
+      <field name="glColorFragmentOp1ATI" writable="1">
+        <type name="GdkGLProc_glColorFragmentOp1ATI"
+              c:type="GdkGLProc_glColorFragmentOp1ATI"/>
+      </field>
+      <field name="glColorFragmentOp2ATI" writable="1">
+        <type name="GdkGLProc_glColorFragmentOp2ATI"
+              c:type="GdkGLProc_glColorFragmentOp2ATI"/>
+      </field>
+      <field name="glColorFragmentOp3ATI" writable="1">
+        <type name="GdkGLProc_glColorFragmentOp3ATI"
+              c:type="GdkGLProc_glColorFragmentOp3ATI"/>
+      </field>
+      <field name="glAlphaFragmentOp1ATI" writable="1">
+        <type name="GdkGLProc_glAlphaFragmentOp1ATI"
+              c:type="GdkGLProc_glAlphaFragmentOp1ATI"/>
+      </field>
+      <field name="glAlphaFragmentOp2ATI" writable="1">
+        <type name="GdkGLProc_glAlphaFragmentOp2ATI"
+              c:type="GdkGLProc_glAlphaFragmentOp2ATI"/>
+      </field>
+      <field name="glAlphaFragmentOp3ATI" writable="1">
+        <type name="GdkGLProc_glAlphaFragmentOp3ATI"
+              c:type="GdkGLProc_glAlphaFragmentOp3ATI"/>
+      </field>
+      <field name="glSetFragmentShaderConstantATI" writable="1">
+        <type name="GdkGLProc_glSetFragmentShaderConstantATI"
+              c:type="GdkGLProc_glSetFragmentShaderConstantATI"/>
+      </field>
+    </record>
+    <record name="GL_GL_ATI_map_object_buffer"
+            c:type="GdkGL_GL_ATI_map_object_buffer">
+      <field name="glMapObjectBufferATI" writable="1">
+        <type name="GdkGLProc_glMapObjectBufferATI"
+              c:type="GdkGLProc_glMapObjectBufferATI"/>
+      </field>
+      <field name="glUnmapObjectBufferATI" writable="1">
+        <type name="GdkGLProc_glUnmapObjectBufferATI"
+              c:type="GdkGLProc_glUnmapObjectBufferATI"/>
+      </field>
+    </record>
+    <record name="GL_GL_ATI_pn_triangles" c:type="GdkGL_GL_ATI_pn_triangles">
+      <field name="glPNTrianglesiATI" writable="1">
+        <type name="GdkGLProc_glPNTrianglesiATI"
+              c:type="GdkGLProc_glPNTrianglesiATI"/>
+      </field>
+      <field name="glPNTrianglesfATI" writable="1">
+        <type name="GdkGLProc_glPNTrianglesfATI"
+              c:type="GdkGLProc_glPNTrianglesfATI"/>
+      </field>
+    </record>
+    <record name="GL_GL_ATI_separate_stencil"
+            c:type="GdkGL_GL_ATI_separate_stencil">
+      <field name="glStencilOpSeparateATI" writable="1">
+        <type name="GdkGLProc_glStencilOpSeparateATI"
+              c:type="GdkGLProc_glStencilOpSeparateATI"/>
+      </field>
+      <field name="glStencilFuncSeparateATI" writable="1">
+        <type name="GdkGLProc_glStencilFuncSeparateATI"
+              c:type="GdkGLProc_glStencilFuncSeparateATI"/>
+      </field>
+    </record>
+    <record name="GL_GL_ATI_vertex_array_object"
+            c:type="GdkGL_GL_ATI_vertex_array_object">
+      <field name="glNewObjectBufferATI" writable="1">
+        <type name="GdkGLProc_glNewObjectBufferATI"
+              c:type="GdkGLProc_glNewObjectBufferATI"/>
+      </field>
+      <field name="glIsObjectBufferATI" writable="1">
+        <type name="GdkGLProc_glIsObjectBufferATI"
+              c:type="GdkGLProc_glIsObjectBufferATI"/>
+      </field>
+      <field name="glUpdateObjectBufferATI" writable="1">
+        <type name="GdkGLProc_glUpdateObjectBufferATI"
+              c:type="GdkGLProc_glUpdateObjectBufferATI"/>
+      </field>
+      <field name="glGetObjectBufferfvATI" writable="1">
+        <type name="GdkGLProc_glGetObjectBufferfvATI"
+              c:type="GdkGLProc_glGetObjectBufferfvATI"/>
+      </field>
+      <field name="glGetObjectBufferivATI" writable="1">
+        <type name="GdkGLProc_glGetObjectBufferivATI"
+              c:type="GdkGLProc_glGetObjectBufferivATI"/>
+      </field>
+      <field name="glFreeObjectBufferATI" writable="1">
+        <type name="GdkGLProc_glFreeObjectBufferATI"
+              c:type="GdkGLProc_glFreeObjectBufferATI"/>
+      </field>
+      <field name="glArrayObjectATI" writable="1">
+        <type name="GdkGLProc_glArrayObjectATI"
+              c:type="GdkGLProc_glArrayObjectATI"/>
+      </field>
+      <field name="glGetArrayObjectfvATI" writable="1">
+        <type name="GdkGLProc_glGetArrayObjectfvATI"
+              c:type="GdkGLProc_glGetArrayObjectfvATI"/>
+      </field>
+      <field name="glGetArrayObjectivATI" writable="1">
+        <type name="GdkGLProc_glGetArrayObjectivATI"
+              c:type="GdkGLProc_glGetArrayObjectivATI"/>
+      </field>
+      <field name="glVariantArrayObjectATI" writable="1">
+        <type name="GdkGLProc_glVariantArrayObjectATI"
+              c:type="GdkGLProc_glVariantArrayObjectATI"/>
+      </field>
+      <field name="glGetVariantArrayObjectfvATI" writable="1">
+        <type name="GdkGLProc_glGetVariantArrayObjectfvATI"
+              c:type="GdkGLProc_glGetVariantArrayObjectfvATI"/>
+      </field>
+      <field name="glGetVariantArrayObjectivATI" writable="1">
+        <type name="GdkGLProc_glGetVariantArrayObjectivATI"
+              c:type="GdkGLProc_glGetVariantArrayObjectivATI"/>
+      </field>
+    </record>
+    <record name="GL_GL_ATI_vertex_attrib_array_object"
+            c:type="GdkGL_GL_ATI_vertex_attrib_array_object">
+      <field name="glVertexAttribArrayObjectATI" writable="1">
+        <type name="GdkGLProc_glVertexAttribArrayObjectATI"
+              c:type="GdkGLProc_glVertexAttribArrayObjectATI"/>
+      </field>
+      <field name="glGetVertexAttribArrayObjectfvATI" writable="1">
+        <type name="GdkGLProc_glGetVertexAttribArrayObjectfvATI"
+              c:type="GdkGLProc_glGetVertexAttribArrayObjectfvATI"/>
+      </field>
+      <field name="glGetVertexAttribArrayObjectivATI" writable="1">
+        <type name="GdkGLProc_glGetVertexAttribArrayObjectivATI"
+              c:type="GdkGLProc_glGetVertexAttribArrayObjectivATI"/>
+      </field>
+    </record>
+    <record name="GL_GL_ATI_vertex_streams"
+            c:type="GdkGL_GL_ATI_vertex_streams">
+      <field name="glVertexStream1sATI" writable="1">
+        <type name="GdkGLProc_glVertexStream1sATI"
+              c:type="GdkGLProc_glVertexStream1sATI"/>
+      </field>
+      <field name="glVertexStream1svATI" writable="1">
+        <type name="GdkGLProc_glVertexStream1svATI"
+              c:type="GdkGLProc_glVertexStream1svATI"/>
+      </field>
+      <field name="glVertexStream1iATI" writable="1">
+        <type name="GdkGLProc_glVertexStream1iATI"
+              c:type="GdkGLProc_glVertexStream1iATI"/>
+      </field>
+      <field name="glVertexStream1ivATI" writable="1">
+        <type name="GdkGLProc_glVertexStream1ivATI"
+              c:type="GdkGLProc_glVertexStream1ivATI"/>
+      </field>
+      <field name="glVertexStream1fATI" writable="1">
+        <type name="GdkGLProc_glVertexStream1fATI"
+              c:type="GdkGLProc_glVertexStream1fATI"/>
+      </field>
+      <field name="glVertexStream1fvATI" writable="1">
+        <type name="GdkGLProc_glVertexStream1fvATI"
+              c:type="GdkGLProc_glVertexStream1fvATI"/>
+      </field>
+      <field name="glVertexStream1dATI" writable="1">
+        <type name="GdkGLProc_glVertexStream1dATI"
+              c:type="GdkGLProc_glVertexStream1dATI"/>
+      </field>
+      <field name="glVertexStream1dvATI" writable="1">
+        <type name="GdkGLProc_glVertexStream1dvATI"
+              c:type="GdkGLProc_glVertexStream1dvATI"/>
+      </field>
+      <field name="glVertexStream2sATI" writable="1">
+        <type name="GdkGLProc_glVertexStream2sATI"
+              c:type="GdkGLProc_glVertexStream2sATI"/>
+      </field>
+      <field name="glVertexStream2svATI" writable="1">
+        <type name="GdkGLProc_glVertexStream2svATI"
+              c:type="GdkGLProc_glVertexStream2svATI"/>
+      </field>
+      <field name="glVertexStream2iATI" writable="1">
+        <type name="GdkGLProc_glVertexStream2iATI"
+              c:type="GdkGLProc_glVertexStream2iATI"/>
+      </field>
+      <field name="glVertexStream2ivATI" writable="1">
+        <type name="GdkGLProc_glVertexStream2ivATI"
+              c:type="GdkGLProc_glVertexStream2ivATI"/>
+      </field>
+      <field name="glVertexStream2fATI" writable="1">
+        <type name="GdkGLProc_glVertexStream2fATI"
+              c:type="GdkGLProc_glVertexStream2fATI"/>
+      </field>
+      <field name="glVertexStream2fvATI" writable="1">
+        <type name="GdkGLProc_glVertexStream2fvATI"
+              c:type="GdkGLProc_glVertexStream2fvATI"/>
+      </field>
+      <field name="glVertexStream2dATI" writable="1">
+        <type name="GdkGLProc_glVertexStream2dATI"
+              c:type="GdkGLProc_glVertexStream2dATI"/>
+      </field>
+      <field name="glVertexStream2dvATI" writable="1">
+        <type name="GdkGLProc_glVertexStream2dvATI"
+              c:type="GdkGLProc_glVertexStream2dvATI"/>
+      </field>
+      <field name="glVertexStream3sATI" writable="1">
+        <type name="GdkGLProc_glVertexStream3sATI"
+              c:type="GdkGLProc_glVertexStream3sATI"/>
+      </field>
+      <field name="glVertexStream3svATI" writable="1">
+        <type name="GdkGLProc_glVertexStream3svATI"
+              c:type="GdkGLProc_glVertexStream3svATI"/>
+      </field>
+      <field name="glVertexStream3iATI" writable="1">
+        <type name="GdkGLProc_glVertexStream3iATI"
+              c:type="GdkGLProc_glVertexStream3iATI"/>
+      </field>
+      <field name="glVertexStream3ivATI" writable="1">
+        <type name="GdkGLProc_glVertexStream3ivATI"
+              c:type="GdkGLProc_glVertexStream3ivATI"/>
+      </field>
+      <field name="glVertexStream3fATI" writable="1">
+        <type name="GdkGLProc_glVertexStream3fATI"
+              c:type="GdkGLProc_glVertexStream3fATI"/>
+      </field>
+      <field name="glVertexStream3fvATI" writable="1">
+        <type name="GdkGLProc_glVertexStream3fvATI"
+              c:type="GdkGLProc_glVertexStream3fvATI"/>
+      </field>
+      <field name="glVertexStream3dATI" writable="1">
+        <type name="GdkGLProc_glVertexStream3dATI"
+              c:type="GdkGLProc_glVertexStream3dATI"/>
+      </field>
+      <field name="glVertexStream3dvATI" writable="1">
+        <type name="GdkGLProc_glVertexStream3dvATI"
+              c:type="GdkGLProc_glVertexStream3dvATI"/>
+      </field>
+      <field name="glVertexStream4sATI" writable="1">
+        <type name="GdkGLProc_glVertexStream4sATI"
+              c:type="GdkGLProc_glVertexStream4sATI"/>
+      </field>
+      <field name="glVertexStream4svATI" writable="1">
+        <type name="GdkGLProc_glVertexStream4svATI"
+              c:type="GdkGLProc_glVertexStream4svATI"/>
+      </field>
+      <field name="glVertexStream4iATI" writable="1">
+        <type name="GdkGLProc_glVertexStream4iATI"
+              c:type="GdkGLProc_glVertexStream4iATI"/>
+      </field>
+      <field name="glVertexStream4ivATI" writable="1">
+        <type name="GdkGLProc_glVertexStream4ivATI"
+              c:type="GdkGLProc_glVertexStream4ivATI"/>
+      </field>
+      <field name="glVertexStream4fATI" writable="1">
+        <type name="GdkGLProc_glVertexStream4fATI"
+              c:type="GdkGLProc_glVertexStream4fATI"/>
+      </field>
+      <field name="glVertexStream4fvATI" writable="1">
+        <type name="GdkGLProc_glVertexStream4fvATI"
+              c:type="GdkGLProc_glVertexStream4fvATI"/>
+      </field>
+      <field name="glVertexStream4dATI" writable="1">
+        <type name="GdkGLProc_glVertexStream4dATI"
+              c:type="GdkGLProc_glVertexStream4dATI"/>
+      </field>
+      <field name="glVertexStream4dvATI" writable="1">
+        <type name="GdkGLProc_glVertexStream4dvATI"
+              c:type="GdkGLProc_glVertexStream4dvATI"/>
+      </field>
+      <field name="glNormalStream3bATI" writable="1">
+        <type name="GdkGLProc_glNormalStream3bATI"
+              c:type="GdkGLProc_glNormalStream3bATI"/>
+      </field>
+      <field name="glNormalStream3bvATI" writable="1">
+        <type name="GdkGLProc_glNormalStream3bvATI"
+              c:type="GdkGLProc_glNormalStream3bvATI"/>
+      </field>
+      <field name="glNormalStream3sATI" writable="1">
+        <type name="GdkGLProc_glNormalStream3sATI"
+              c:type="GdkGLProc_glNormalStream3sATI"/>
+      </field>
+      <field name="glNormalStream3svATI" writable="1">
+        <type name="GdkGLProc_glNormalStream3svATI"
+              c:type="GdkGLProc_glNormalStream3svATI"/>
+      </field>
+      <field name="glNormalStream3iATI" writable="1">
+        <type name="GdkGLProc_glNormalStream3iATI"
+              c:type="GdkGLProc_glNormalStream3iATI"/>
+      </field>
+      <field name="glNormalStream3ivATI" writable="1">
+        <type name="GdkGLProc_glNormalStream3ivATI"
+              c:type="GdkGLProc_glNormalStream3ivATI"/>
+      </field>
+      <field name="glNormalStream3fATI" writable="1">
+        <type name="GdkGLProc_glNormalStream3fATI"
+              c:type="GdkGLProc_glNormalStream3fATI"/>
+      </field>
+      <field name="glNormalStream3fvATI" writable="1">
+        <type name="GdkGLProc_glNormalStream3fvATI"
+              c:type="GdkGLProc_glNormalStream3fvATI"/>
+      </field>
+      <field name="glNormalStream3dATI" writable="1">
+        <type name="GdkGLProc_glNormalStream3dATI"
+              c:type="GdkGLProc_glNormalStream3dATI"/>
+      </field>
+      <field name="glNormalStream3dvATI" writable="1">
+        <type name="GdkGLProc_glNormalStream3dvATI"
+              c:type="GdkGLProc_glNormalStream3dvATI"/>
+      </field>
+      <field name="glClientActiveVertexStreamATI" writable="1">
+        <type name="GdkGLProc_glClientActiveVertexStreamATI"
+              c:type="GdkGLProc_glClientActiveVertexStreamATI"/>
+      </field>
+      <field name="glVertexBlendEnviATI" writable="1">
+        <type name="GdkGLProc_glVertexBlendEnviATI"
+              c:type="GdkGLProc_glVertexBlendEnviATI"/>
+      </field>
+      <field name="glVertexBlendEnvfATI" writable="1">
+        <type name="GdkGLProc_glVertexBlendEnvfATI"
+              c:type="GdkGLProc_glVertexBlendEnvfATI"/>
+      </field>
+    </record>
+    <record name="GL_GL_Autodesk_facet_normal"
+            c:type="GdkGL_GL_Autodesk_facet_normal">
+      <field name="glFacetNormal3b" writable="1">
+        <type name="GdkGLProc_glFacetNormal3b"
+              c:type="GdkGLProc_glFacetNormal3b"/>
+      </field>
+      <field name="glFacetNormal3d" writable="1">
+        <type name="GdkGLProc_glFacetNormal3d"
+              c:type="GdkGLProc_glFacetNormal3d"/>
+      </field>
+      <field name="glFacetNormal3f" writable="1">
+        <type name="GdkGLProc_glFacetNormal3f"
+              c:type="GdkGLProc_glFacetNormal3f"/>
+      </field>
+      <field name="glFacetNormal3i" writable="1">
+        <type name="GdkGLProc_glFacetNormal3i"
+              c:type="GdkGLProc_glFacetNormal3i"/>
+      </field>
+      <field name="glFacetNormal3s" writable="1">
+        <type name="GdkGLProc_glFacetNormal3s"
+              c:type="GdkGLProc_glFacetNormal3s"/>
+      </field>
+      <field name="glFacetNormal3bv" writable="1">
+        <type name="GdkGLProc_glFacetNormal3bv"
+              c:type="GdkGLProc_glFacetNormal3bv"/>
+      </field>
+      <field name="glFacetNormal3dv" writable="1">
+        <type name="GdkGLProc_glFacetNormal3dv"
+              c:type="GdkGLProc_glFacetNormal3dv"/>
+      </field>
+      <field name="glFacetNormal3fv" writable="1">
+        <type name="GdkGLProc_glFacetNormal3fv"
+              c:type="GdkGLProc_glFacetNormal3fv"/>
+      </field>
+      <field name="glFacetNormal3iv" writable="1">
+        <type name="GdkGLProc_glFacetNormal3iv"
+              c:type="GdkGLProc_glFacetNormal3iv"/>
+      </field>
+      <field name="glFacetNormal3sv" writable="1">
+        <type name="GdkGLProc_glFacetNormal3sv"
+              c:type="GdkGLProc_glFacetNormal3sv"/>
+      </field>
+    </record>
+    <record name="GL_GL_Autodesk_valid_back_buffer_hint"
+            c:type="GdkGL_GL_Autodesk_valid_back_buffer_hint">
+      <field name="glWindowBackBufferHint" writable="1">
+        <type name="GdkGLProc_glWindowBackBufferHint"
+              c:type="GdkGLProc_glWindowBackBufferHint"/>
+      </field>
+      <field name="glValidBackBufferHint" writable="1">
+        <type name="GdkGLProc_glValidBackBufferHint"
+              c:type="GdkGLProc_glValidBackBufferHint"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_blend_color" c:type="GdkGL_GL_EXT_blend_color">
+      <field name="glBlendColorEXT" writable="1">
+        <type name="GdkGLProc_glBlendColorEXT"
+              c:type="GdkGLProc_glBlendColorEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_blend_func_separate"
+            c:type="GdkGL_GL_EXT_blend_func_separate">
+      <field name="glBlendFuncSeparateEXT" writable="1">
+        <type name="GdkGLProc_glBlendFuncSeparateEXT"
+              c:type="GdkGLProc_glBlendFuncSeparateEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_blend_minmax" c:type="GdkGL_GL_EXT_blend_minmax">
+      <field name="glBlendEquationEXT" writable="1">
+        <type name="GdkGLProc_glBlendEquationEXT"
+              c:type="GdkGLProc_glBlendEquationEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_color_subtable"
+            c:type="GdkGL_GL_EXT_color_subtable">
+      <field name="glColorSubTableEXT" writable="1">
+        <type name="GdkGLProc_glColorSubTableEXT"
+              c:type="GdkGLProc_glColorSubTableEXT"/>
+      </field>
+      <field name="glCopyColorSubTableEXT" writable="1">
+        <type name="GdkGLProc_glCopyColorSubTableEXT"
+              c:type="GdkGLProc_glCopyColorSubTableEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_compiled_vertex_array"
+            c:type="GdkGL_GL_EXT_compiled_vertex_array">
+      <field name="glLockArraysEXT" writable="1">
+        <type name="GdkGLProc_glLockArraysEXT"
+              c:type="GdkGLProc_glLockArraysEXT"/>
+      </field>
+      <field name="glUnlockArraysEXT" writable="1">
+        <type name="GdkGLProc_glUnlockArraysEXT"
+              c:type="GdkGLProc_glUnlockArraysEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_convolution" c:type="GdkGL_GL_EXT_convolution">
+      <field name="glConvolutionFilter1DEXT" writable="1">
+        <type name="GdkGLProc_glConvolutionFilter1DEXT"
+              c:type="GdkGLProc_glConvolutionFilter1DEXT"/>
+      </field>
+      <field name="glConvolutionFilter2DEXT" writable="1">
+        <type name="GdkGLProc_glConvolutionFilter2DEXT"
+              c:type="GdkGLProc_glConvolutionFilter2DEXT"/>
+      </field>
+      <field name="glConvolutionParameterfEXT" writable="1">
+        <type name="GdkGLProc_glConvolutionParameterfEXT"
+              c:type="GdkGLProc_glConvolutionParameterfEXT"/>
+      </field>
+      <field name="glConvolutionParameterfvEXT" writable="1">
+        <type name="GdkGLProc_glConvolutionParameterfvEXT"
+              c:type="GdkGLProc_glConvolutionParameterfvEXT"/>
+      </field>
+      <field name="glConvolutionParameteriEXT" writable="1">
+        <type name="GdkGLProc_glConvolutionParameteriEXT"
+              c:type="GdkGLProc_glConvolutionParameteriEXT"/>
+      </field>
+      <field name="glConvolutionParameterivEXT" writable="1">
+        <type name="GdkGLProc_glConvolutionParameterivEXT"
+              c:type="GdkGLProc_glConvolutionParameterivEXT"/>
+      </field>
+      <field name="glCopyConvolutionFilter1DEXT" writable="1">
+        <type name="GdkGLProc_glCopyConvolutionFilter1DEXT"
+              c:type="GdkGLProc_glCopyConvolutionFilter1DEXT"/>
+      </field>
+      <field name="glCopyConvolutionFilter2DEXT" writable="1">
+        <type name="GdkGLProc_glCopyConvolutionFilter2DEXT"
+              c:type="GdkGLProc_glCopyConvolutionFilter2DEXT"/>
+      </field>
+      <field name="glGetConvolutionFilterEXT" writable="1">
+        <type name="GdkGLProc_glGetConvolutionFilterEXT"
+              c:type="GdkGLProc_glGetConvolutionFilterEXT"/>
+      </field>
+      <field name="glGetConvolutionParameterfvEXT" writable="1">
+        <type name="GdkGLProc_glGetConvolutionParameterfvEXT"
+              c:type="GdkGLProc_glGetConvolutionParameterfvEXT"/>
+      </field>
+      <field name="glGetConvolutionParameterivEXT" writable="1">
+        <type name="GdkGLProc_glGetConvolutionParameterivEXT"
+              c:type="GdkGLProc_glGetConvolutionParameterivEXT"/>
+      </field>
+      <field name="glGetSeparableFilterEXT" writable="1">
+        <type name="GdkGLProc_glGetSeparableFilterEXT"
+              c:type="GdkGLProc_glGetSeparableFilterEXT"/>
+      </field>
+      <field name="glSeparableFilter2DEXT" writable="1">
+        <type name="GdkGLProc_glSeparableFilter2DEXT"
+              c:type="GdkGLProc_glSeparableFilter2DEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_coordinate_frame"
+            c:type="GdkGL_GL_EXT_coordinate_frame">
+      <field name="glTangent3bEXT" writable="1">
+        <type name="GdkGLProc_glTangent3bEXT"
+              c:type="GdkGLProc_glTangent3bEXT"/>
+      </field>
+      <field name="glTangent3bvEXT" writable="1">
+        <type name="GdkGLProc_glTangent3bvEXT"
+              c:type="GdkGLProc_glTangent3bvEXT"/>
+      </field>
+      <field name="glTangent3dEXT" writable="1">
+        <type name="GdkGLProc_glTangent3dEXT"
+              c:type="GdkGLProc_glTangent3dEXT"/>
+      </field>
+      <field name="glTangent3dvEXT" writable="1">
+        <type name="GdkGLProc_glTangent3dvEXT"
+              c:type="GdkGLProc_glTangent3dvEXT"/>
+      </field>
+      <field name="glTangent3fEXT" writable="1">
+        <type name="GdkGLProc_glTangent3fEXT"
+              c:type="GdkGLProc_glTangent3fEXT"/>
+      </field>
+      <field name="glTangent3fvEXT" writable="1">
+        <type name="GdkGLProc_glTangent3fvEXT"
+              c:type="GdkGLProc_glTangent3fvEXT"/>
+      </field>
+      <field name="glTangent3iEXT" writable="1">
+        <type name="GdkGLProc_glTangent3iEXT"
+              c:type="GdkGLProc_glTangent3iEXT"/>
+      </field>
+      <field name="glTangent3ivEXT" writable="1">
+        <type name="GdkGLProc_glTangent3ivEXT"
+              c:type="GdkGLProc_glTangent3ivEXT"/>
+      </field>
+      <field name="glTangent3sEXT" writable="1">
+        <type name="GdkGLProc_glTangent3sEXT"
+              c:type="GdkGLProc_glTangent3sEXT"/>
+      </field>
+      <field name="glTangent3svEXT" writable="1">
+        <type name="GdkGLProc_glTangent3svEXT"
+              c:type="GdkGLProc_glTangent3svEXT"/>
+      </field>
+      <field name="glBinormal3bEXT" writable="1">
+        <type name="GdkGLProc_glBinormal3bEXT"
+              c:type="GdkGLProc_glBinormal3bEXT"/>
+      </field>
+      <field name="glBinormal3bvEXT" writable="1">
+        <type name="GdkGLProc_glBinormal3bvEXT"
+              c:type="GdkGLProc_glBinormal3bvEXT"/>
+      </field>
+      <field name="glBinormal3dEXT" writable="1">
+        <type name="GdkGLProc_glBinormal3dEXT"
+              c:type="GdkGLProc_glBinormal3dEXT"/>
+      </field>
+      <field name="glBinormal3dvEXT" writable="1">
+        <type name="GdkGLProc_glBinormal3dvEXT"
+              c:type="GdkGLProc_glBinormal3dvEXT"/>
+      </field>
+      <field name="glBinormal3fEXT" writable="1">
+        <type name="GdkGLProc_glBinormal3fEXT"
+              c:type="GdkGLProc_glBinormal3fEXT"/>
+      </field>
+      <field name="glBinormal3fvEXT" writable="1">
+        <type name="GdkGLProc_glBinormal3fvEXT"
+              c:type="GdkGLProc_glBinormal3fvEXT"/>
+      </field>
+      <field name="glBinormal3iEXT" writable="1">
+        <type name="GdkGLProc_glBinormal3iEXT"
+              c:type="GdkGLProc_glBinormal3iEXT"/>
+      </field>
+      <field name="glBinormal3ivEXT" writable="1">
+        <type name="GdkGLProc_glBinormal3ivEXT"
+              c:type="GdkGLProc_glBinormal3ivEXT"/>
+      </field>
+      <field name="glBinormal3sEXT" writable="1">
+        <type name="GdkGLProc_glBinormal3sEXT"
+              c:type="GdkGLProc_glBinormal3sEXT"/>
+      </field>
+      <field name="glBinormal3svEXT" writable="1">
+        <type name="GdkGLProc_glBinormal3svEXT"
+              c:type="GdkGLProc_glBinormal3svEXT"/>
+      </field>
+      <field name="glTangentPointerEXT" writable="1">
+        <type name="GdkGLProc_glTangentPointerEXT"
+              c:type="GdkGLProc_glTangentPointerEXT"/>
+      </field>
+      <field name="glBinormalPointerEXT" writable="1">
+        <type name="GdkGLProc_glBinormalPointerEXT"
+              c:type="GdkGLProc_glBinormalPointerEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_copy_texture" c:type="GdkGL_GL_EXT_copy_texture">
+      <field name="glCopyTexImage1DEXT" writable="1">
+        <type name="GdkGLProc_glCopyTexImage1DEXT"
+              c:type="GdkGLProc_glCopyTexImage1DEXT"/>
+      </field>
+      <field name="glCopyTexImage2DEXT" writable="1">
+        <type name="GdkGLProc_glCopyTexImage2DEXT"
+              c:type="GdkGLProc_glCopyTexImage2DEXT"/>
+      </field>
+      <field name="glCopyTexSubImage1DEXT" writable="1">
+        <type name="GdkGLProc_glCopyTexSubImage1DEXT"
+              c:type="GdkGLProc_glCopyTexSubImage1DEXT"/>
+      </field>
+      <field name="glCopyTexSubImage2DEXT" writable="1">
+        <type name="GdkGLProc_glCopyTexSubImage2DEXT"
+              c:type="GdkGLProc_glCopyTexSubImage2DEXT"/>
+      </field>
+      <field name="glCopyTexSubImage3DEXT" writable="1">
+        <type name="GdkGLProc_glCopyTexSubImage3DEXT"
+              c:type="GdkGLProc_glCopyTexSubImage3DEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_cull_vertex" c:type="GdkGL_GL_EXT_cull_vertex">
+      <field name="glCullParameterdvEXT" writable="1">
+        <type name="GdkGLProc_glCullParameterdvEXT"
+              c:type="GdkGLProc_glCullParameterdvEXT"/>
+      </field>
+      <field name="glCullParameterfvEXT" writable="1">
+        <type name="GdkGLProc_glCullParameterfvEXT"
+              c:type="GdkGLProc_glCullParameterfvEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_depth_bounds_test"
+            c:type="GdkGL_GL_EXT_depth_bounds_test">
+      <field name="glDepthBoundsEXT" writable="1">
+        <type name="GdkGLProc_glDepthBoundsEXT"
+              c:type="GdkGLProc_glDepthBoundsEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_draw_range_elements"
+            c:type="GdkGL_GL_EXT_draw_range_elements">
+      <field name="glDrawRangeElementsEXT" writable="1">
+        <type name="GdkGLProc_glDrawRangeElementsEXT"
+              c:type="GdkGLProc_glDrawRangeElementsEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_fog_coord" c:type="GdkGL_GL_EXT_fog_coord">
+      <field name="glFogCoordfEXT" writable="1">
+        <type name="GdkGLProc_glFogCoordfEXT"
+              c:type="GdkGLProc_glFogCoordfEXT"/>
+      </field>
+      <field name="glFogCoordfvEXT" writable="1">
+        <type name="GdkGLProc_glFogCoordfvEXT"
+              c:type="GdkGLProc_glFogCoordfvEXT"/>
+      </field>
+      <field name="glFogCoorddEXT" writable="1">
+        <type name="GdkGLProc_glFogCoorddEXT"
+              c:type="GdkGLProc_glFogCoorddEXT"/>
+      </field>
+      <field name="glFogCoorddvEXT" writable="1">
+        <type name="GdkGLProc_glFogCoorddvEXT"
+              c:type="GdkGLProc_glFogCoorddvEXT"/>
+      </field>
+      <field name="glFogCoordPointerEXT" writable="1">
+        <type name="GdkGLProc_glFogCoordPointerEXT"
+              c:type="GdkGLProc_glFogCoordPointerEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_fragment_lighting"
+            c:type="GdkGL_GL_EXT_fragment_lighting">
+      <field name="glFragmentLightModelfEXT" writable="1">
+        <type name="GdkGLProc_glFragmentLightModelfEXT"
+              c:type="GdkGLProc_glFragmentLightModelfEXT"/>
+      </field>
+      <field name="glFragmentLightModelfvEXT" writable="1">
+        <type name="GdkGLProc_glFragmentLightModelfvEXT"
+              c:type="GdkGLProc_glFragmentLightModelfvEXT"/>
+      </field>
+      <field name="glFragmentLightModeliEXT" writable="1">
+        <type name="GdkGLProc_glFragmentLightModeliEXT"
+              c:type="GdkGLProc_glFragmentLightModeliEXT"/>
+      </field>
+      <field name="glFragmentLightModelivEXT" writable="1">
+        <type name="GdkGLProc_glFragmentLightModelivEXT"
+              c:type="GdkGLProc_glFragmentLightModelivEXT"/>
+      </field>
+      <field name="glFragmentLightfEXT" writable="1">
+        <type name="GdkGLProc_glFragmentLightfEXT"
+              c:type="GdkGLProc_glFragmentLightfEXT"/>
+      </field>
+      <field name="glFragmentLightfvEXT" writable="1">
+        <type name="GdkGLProc_glFragmentLightfvEXT"
+              c:type="GdkGLProc_glFragmentLightfvEXT"/>
+      </field>
+      <field name="glFragmentLightiEXT" writable="1">
+        <type name="GdkGLProc_glFragmentLightiEXT"
+              c:type="GdkGLProc_glFragmentLightiEXT"/>
+      </field>
+      <field name="glFragmentLightivEXT" writable="1">
+        <type name="GdkGLProc_glFragmentLightivEXT"
+              c:type="GdkGLProc_glFragmentLightivEXT"/>
+      </field>
+      <field name="glGetFragmentLightfvEXT" writable="1">
+        <type name="GdkGLProc_glGetFragmentLightfvEXT"
+              c:type="GdkGLProc_glGetFragmentLightfvEXT"/>
+      </field>
+      <field name="glGetFragmentLightivEXT" writable="1">
+        <type name="GdkGLProc_glGetFragmentLightivEXT"
+              c:type="GdkGLProc_glGetFragmentLightivEXT"/>
+      </field>
+      <field name="glFragmentMaterialfEXT" writable="1">
+        <type name="GdkGLProc_glFragmentMaterialfEXT"
+              c:type="GdkGLProc_glFragmentMaterialfEXT"/>
+      </field>
+      <field name="glFragmentMaterialfvEXT" writable="1">
+        <type name="GdkGLProc_glFragmentMaterialfvEXT"
+              c:type="GdkGLProc_glFragmentMaterialfvEXT"/>
+      </field>
+      <field name="glFragmentMaterialiEXT" writable="1">
+        <type name="GdkGLProc_glFragmentMaterialiEXT"
+              c:type="GdkGLProc_glFragmentMaterialiEXT"/>
+      </field>
+      <field name="glFragmentMaterialivEXT" writable="1">
+        <type name="GdkGLProc_glFragmentMaterialivEXT"
+              c:type="GdkGLProc_glFragmentMaterialivEXT"/>
+      </field>
+      <field name="glFragmentColorMaterialEXT" writable="1">
+        <type name="GdkGLProc_glFragmentColorMaterialEXT"
+              c:type="GdkGLProc_glFragmentColorMaterialEXT"/>
+      </field>
+      <field name="glGetFragmentMaterialfvEXT" writable="1">
+        <type name="GdkGLProc_glGetFragmentMaterialfvEXT"
+              c:type="GdkGLProc_glGetFragmentMaterialfvEXT"/>
+      </field>
+      <field name="glGetFragmentMaterialivEXT" writable="1">
+        <type name="GdkGLProc_glGetFragmentMaterialivEXT"
+              c:type="GdkGLProc_glGetFragmentMaterialivEXT"/>
+      </field>
+      <field name="glLightEnviEXT" writable="1">
+        <type name="GdkGLProc_glLightEnviEXT"
+              c:type="GdkGLProc_glLightEnviEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_histogram" c:type="GdkGL_GL_EXT_histogram">
+      <field name="glGetHistogramEXT" writable="1">
+        <type name="GdkGLProc_glGetHistogramEXT"
+              c:type="GdkGLProc_glGetHistogramEXT"/>
+      </field>
+      <field name="glGetHistogramParameterfvEXT" writable="1">
+        <type name="GdkGLProc_glGetHistogramParameterfvEXT"
+              c:type="GdkGLProc_glGetHistogramParameterfvEXT"/>
+      </field>
+      <field name="glGetHistogramParameterivEXT" writable="1">
+        <type name="GdkGLProc_glGetHistogramParameterivEXT"
+              c:type="GdkGLProc_glGetHistogramParameterivEXT"/>
+      </field>
+      <field name="glGetMinmaxEXT" writable="1">
+        <type name="GdkGLProc_glGetMinmaxEXT"
+              c:type="GdkGLProc_glGetMinmaxEXT"/>
+      </field>
+      <field name="glGetMinmaxParameterfvEXT" writable="1">
+        <type name="GdkGLProc_glGetMinmaxParameterfvEXT"
+              c:type="GdkGLProc_glGetMinmaxParameterfvEXT"/>
+      </field>
+      <field name="glGetMinmaxParameterivEXT" writable="1">
+        <type name="GdkGLProc_glGetMinmaxParameterivEXT"
+              c:type="GdkGLProc_glGetMinmaxParameterivEXT"/>
+      </field>
+      <field name="glHistogramEXT" writable="1">
+        <type name="GdkGLProc_glHistogramEXT"
+              c:type="GdkGLProc_glHistogramEXT"/>
+      </field>
+      <field name="glMinmaxEXT" writable="1">
+        <type name="GdkGLProc_glMinmaxEXT" c:type="GdkGLProc_glMinmaxEXT"/>
+      </field>
+      <field name="glResetHistogramEXT" writable="1">
+        <type name="GdkGLProc_glResetHistogramEXT"
+              c:type="GdkGLProc_glResetHistogramEXT"/>
+      </field>
+      <field name="glResetMinmaxEXT" writable="1">
+        <type name="GdkGLProc_glResetMinmaxEXT"
+              c:type="GdkGLProc_glResetMinmaxEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_index_func" c:type="GdkGL_GL_EXT_index_func">
+      <field name="glIndexFuncEXT" writable="1">
+        <type name="GdkGLProc_glIndexFuncEXT"
+              c:type="GdkGLProc_glIndexFuncEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_index_material"
+            c:type="GdkGL_GL_EXT_index_material">
+      <field name="glIndexMaterialEXT" writable="1">
+        <type name="GdkGLProc_glIndexMaterialEXT"
+              c:type="GdkGLProc_glIndexMaterialEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_light_texture" c:type="GdkGL_GL_EXT_light_texture">
+      <field name="glApplyTextureEXT" writable="1">
+        <type name="GdkGLProc_glApplyTextureEXT"
+              c:type="GdkGLProc_glApplyTextureEXT"/>
+      </field>
+      <field name="glTextureLightEXT" writable="1">
+        <type name="GdkGLProc_glTextureLightEXT"
+              c:type="GdkGLProc_glTextureLightEXT"/>
+      </field>
+      <field name="glTextureMaterialEXT" writable="1">
+        <type name="GdkGLProc_glTextureMaterialEXT"
+              c:type="GdkGLProc_glTextureMaterialEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_multi_draw_arrays"
+            c:type="GdkGL_GL_EXT_multi_draw_arrays">
+      <field name="glMultiDrawArraysEXT" writable="1">
+        <type name="GdkGLProc_glMultiDrawArraysEXT"
+              c:type="GdkGLProc_glMultiDrawArraysEXT"/>
+      </field>
+      <field name="glMultiDrawElementsEXT" writable="1">
+        <type name="GdkGLProc_glMultiDrawElementsEXT"
+              c:type="GdkGLProc_glMultiDrawElementsEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_multisample" c:type="GdkGL_GL_EXT_multisample">
+      <field name="glSampleMaskEXT" writable="1">
+        <type name="GdkGLProc_glSampleMaskEXT"
+              c:type="GdkGLProc_glSampleMaskEXT"/>
+      </field>
+      <field name="glSamplePatternEXT" writable="1">
+        <type name="GdkGLProc_glSamplePatternEXT"
+              c:type="GdkGLProc_glSamplePatternEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_multitexture" c:type="GdkGL_GL_EXT_multitexture">
+      <field name="glMultiTexCoord1dEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1dEXT"
+              c:type="GdkGLProc_glMultiTexCoord1dEXT"/>
+      </field>
+      <field name="glMultiTexCoord1dvEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1dvEXT"
+              c:type="GdkGLProc_glMultiTexCoord1dvEXT"/>
+      </field>
+      <field name="glMultiTexCoord1fEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1fEXT"
+              c:type="GdkGLProc_glMultiTexCoord1fEXT"/>
+      </field>
+      <field name="glMultiTexCoord1fvEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1fvEXT"
+              c:type="GdkGLProc_glMultiTexCoord1fvEXT"/>
+      </field>
+      <field name="glMultiTexCoord1iEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1iEXT"
+              c:type="GdkGLProc_glMultiTexCoord1iEXT"/>
+      </field>
+      <field name="glMultiTexCoord1ivEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1ivEXT"
+              c:type="GdkGLProc_glMultiTexCoord1ivEXT"/>
+      </field>
+      <field name="glMultiTexCoord1sEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1sEXT"
+              c:type="GdkGLProc_glMultiTexCoord1sEXT"/>
+      </field>
+      <field name="glMultiTexCoord1svEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1svEXT"
+              c:type="GdkGLProc_glMultiTexCoord1svEXT"/>
+      </field>
+      <field name="glMultiTexCoord2dEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2dEXT"
+              c:type="GdkGLProc_glMultiTexCoord2dEXT"/>
+      </field>
+      <field name="glMultiTexCoord2dvEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2dvEXT"
+              c:type="GdkGLProc_glMultiTexCoord2dvEXT"/>
+      </field>
+      <field name="glMultiTexCoord2fEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2fEXT"
+              c:type="GdkGLProc_glMultiTexCoord2fEXT"/>
+      </field>
+      <field name="glMultiTexCoord2fvEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2fvEXT"
+              c:type="GdkGLProc_glMultiTexCoord2fvEXT"/>
+      </field>
+      <field name="glMultiTexCoord2iEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2iEXT"
+              c:type="GdkGLProc_glMultiTexCoord2iEXT"/>
+      </field>
+      <field name="glMultiTexCoord2ivEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2ivEXT"
+              c:type="GdkGLProc_glMultiTexCoord2ivEXT"/>
+      </field>
+      <field name="glMultiTexCoord2sEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2sEXT"
+              c:type="GdkGLProc_glMultiTexCoord2sEXT"/>
+      </field>
+      <field name="glMultiTexCoord2svEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2svEXT"
+              c:type="GdkGLProc_glMultiTexCoord2svEXT"/>
+      </field>
+      <field name="glMultiTexCoord3dEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3dEXT"
+              c:type="GdkGLProc_glMultiTexCoord3dEXT"/>
+      </field>
+      <field name="glMultiTexCoord3dvEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3dvEXT"
+              c:type="GdkGLProc_glMultiTexCoord3dvEXT"/>
+      </field>
+      <field name="glMultiTexCoord3fEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3fEXT"
+              c:type="GdkGLProc_glMultiTexCoord3fEXT"/>
+      </field>
+      <field name="glMultiTexCoord3fvEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3fvEXT"
+              c:type="GdkGLProc_glMultiTexCoord3fvEXT"/>
+      </field>
+      <field name="glMultiTexCoord3iEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3iEXT"
+              c:type="GdkGLProc_glMultiTexCoord3iEXT"/>
+      </field>
+      <field name="glMultiTexCoord3ivEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3ivEXT"
+              c:type="GdkGLProc_glMultiTexCoord3ivEXT"/>
+      </field>
+      <field name="glMultiTexCoord3sEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3sEXT"
+              c:type="GdkGLProc_glMultiTexCoord3sEXT"/>
+      </field>
+      <field name="glMultiTexCoord3svEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3svEXT"
+              c:type="GdkGLProc_glMultiTexCoord3svEXT"/>
+      </field>
+      <field name="glMultiTexCoord4dEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4dEXT"
+              c:type="GdkGLProc_glMultiTexCoord4dEXT"/>
+      </field>
+      <field name="glMultiTexCoord4dvEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4dvEXT"
+              c:type="GdkGLProc_glMultiTexCoord4dvEXT"/>
+      </field>
+      <field name="glMultiTexCoord4fEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4fEXT"
+              c:type="GdkGLProc_glMultiTexCoord4fEXT"/>
+      </field>
+      <field name="glMultiTexCoord4fvEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4fvEXT"
+              c:type="GdkGLProc_glMultiTexCoord4fvEXT"/>
+      </field>
+      <field name="glMultiTexCoord4iEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4iEXT"
+              c:type="GdkGLProc_glMultiTexCoord4iEXT"/>
+      </field>
+      <field name="glMultiTexCoord4ivEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4ivEXT"
+              c:type="GdkGLProc_glMultiTexCoord4ivEXT"/>
+      </field>
+      <field name="glMultiTexCoord4sEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4sEXT"
+              c:type="GdkGLProc_glMultiTexCoord4sEXT"/>
+      </field>
+      <field name="glMultiTexCoord4svEXT" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4svEXT"
+              c:type="GdkGLProc_glMultiTexCoord4svEXT"/>
+      </field>
+      <field name="glInterleavedTextureCoordSetsEXT" writable="1">
+        <type name="GdkGLProc_glInterleavedTextureCoordSetsEXT"
+              c:type="GdkGLProc_glInterleavedTextureCoordSetsEXT"/>
+      </field>
+      <field name="glSelectTextureEXT" writable="1">
+        <type name="GdkGLProc_glSelectTextureEXT"
+              c:type="GdkGLProc_glSelectTextureEXT"/>
+      </field>
+      <field name="glSelectTextureCoordSetEXT" writable="1">
+        <type name="GdkGLProc_glSelectTextureCoordSetEXT"
+              c:type="GdkGLProc_glSelectTextureCoordSetEXT"/>
+      </field>
+      <field name="glSelectTextureTransformEXT" writable="1">
+        <type name="GdkGLProc_glSelectTextureTransformEXT"
+              c:type="GdkGLProc_glSelectTextureTransformEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_paletted_texture"
+            c:type="GdkGL_GL_EXT_paletted_texture">
+      <field name="glColorTableEXT" writable="1">
+        <type name="GdkGLProc_glColorTableEXT"
+              c:type="GdkGLProc_glColorTableEXT"/>
+      </field>
+      <field name="glGetColorTableEXT" writable="1">
+        <type name="GdkGLProc_glGetColorTableEXT"
+              c:type="GdkGLProc_glGetColorTableEXT"/>
+      </field>
+      <field name="glGetColorTableParameterivEXT" writable="1">
+        <type name="GdkGLProc_glGetColorTableParameterivEXT"
+              c:type="GdkGLProc_glGetColorTableParameterivEXT"/>
+      </field>
+      <field name="glGetColorTableParameterfvEXT" writable="1">
+        <type name="GdkGLProc_glGetColorTableParameterfvEXT"
+              c:type="GdkGLProc_glGetColorTableParameterfvEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_pixel_transform"
+            c:type="GdkGL_GL_EXT_pixel_transform">
+      <field name="glPixelTransformParameteriEXT" writable="1">
+        <type name="GdkGLProc_glPixelTransformParameteriEXT"
+              c:type="GdkGLProc_glPixelTransformParameteriEXT"/>
+      </field>
+      <field name="glPixelTransformParameterfEXT" writable="1">
+        <type name="GdkGLProc_glPixelTransformParameterfEXT"
+              c:type="GdkGLProc_glPixelTransformParameterfEXT"/>
+      </field>
+      <field name="glPixelTransformParameterivEXT" writable="1">
+        <type name="GdkGLProc_glPixelTransformParameterivEXT"
+              c:type="GdkGLProc_glPixelTransformParameterivEXT"/>
+      </field>
+      <field name="glPixelTransformParameterfvEXT" writable="1">
+        <type name="GdkGLProc_glPixelTransformParameterfvEXT"
+              c:type="GdkGLProc_glPixelTransformParameterfvEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_point_parameters"
+            c:type="GdkGL_GL_EXT_point_parameters">
+      <field name="glPointParameterfEXT" writable="1">
+        <type name="GdkGLProc_glPointParameterfEXT"
+              c:type="GdkGLProc_glPointParameterfEXT"/>
+      </field>
+      <field name="glPointParameterfvEXT" writable="1">
+        <type name="GdkGLProc_glPointParameterfvEXT"
+              c:type="GdkGLProc_glPointParameterfvEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_polygon_offset"
+            c:type="GdkGL_GL_EXT_polygon_offset">
+      <field name="glPolygonOffsetEXT" writable="1">
+        <type name="GdkGLProc_glPolygonOffsetEXT"
+              c:type="GdkGLProc_glPolygonOffsetEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_scene_marker" c:type="GdkGL_GL_EXT_scene_marker">
+      <field name="glBeginSceneEXT" writable="1">
+        <type name="GdkGLProc_glBeginSceneEXT"
+              c:type="GdkGLProc_glBeginSceneEXT"/>
+      </field>
+      <field name="glEndSceneEXT" writable="1">
+        <type name="GdkGLProc_glEndSceneEXT" c:type="GdkGLProc_glEndSceneEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_secondary_color"
+            c:type="GdkGL_GL_EXT_secondary_color">
+      <field name="glSecondaryColor3bEXT" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3bEXT"
+              c:type="GdkGLProc_glSecondaryColor3bEXT"/>
+      </field>
+      <field name="glSecondaryColor3bvEXT" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3bvEXT"
+              c:type="GdkGLProc_glSecondaryColor3bvEXT"/>
+      </field>
+      <field name="glSecondaryColor3dEXT" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3dEXT"
+              c:type="GdkGLProc_glSecondaryColor3dEXT"/>
+      </field>
+      <field name="glSecondaryColor3dvEXT" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3dvEXT"
+              c:type="GdkGLProc_glSecondaryColor3dvEXT"/>
+      </field>
+      <field name="glSecondaryColor3fEXT" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3fEXT"
+              c:type="GdkGLProc_glSecondaryColor3fEXT"/>
+      </field>
+      <field name="glSecondaryColor3fvEXT" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3fvEXT"
+              c:type="GdkGLProc_glSecondaryColor3fvEXT"/>
+      </field>
+      <field name="glSecondaryColor3iEXT" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3iEXT"
+              c:type="GdkGLProc_glSecondaryColor3iEXT"/>
+      </field>
+      <field name="glSecondaryColor3ivEXT" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3ivEXT"
+              c:type="GdkGLProc_glSecondaryColor3ivEXT"/>
+      </field>
+      <field name="glSecondaryColor3sEXT" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3sEXT"
+              c:type="GdkGLProc_glSecondaryColor3sEXT"/>
+      </field>
+      <field name="glSecondaryColor3svEXT" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3svEXT"
+              c:type="GdkGLProc_glSecondaryColor3svEXT"/>
+      </field>
+      <field name="glSecondaryColor3ubEXT" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3ubEXT"
+              c:type="GdkGLProc_glSecondaryColor3ubEXT"/>
+      </field>
+      <field name="glSecondaryColor3ubvEXT" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3ubvEXT"
+              c:type="GdkGLProc_glSecondaryColor3ubvEXT"/>
+      </field>
+      <field name="glSecondaryColor3uiEXT" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3uiEXT"
+              c:type="GdkGLProc_glSecondaryColor3uiEXT"/>
+      </field>
+      <field name="glSecondaryColor3uivEXT" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3uivEXT"
+              c:type="GdkGLProc_glSecondaryColor3uivEXT"/>
+      </field>
+      <field name="glSecondaryColor3usEXT" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3usEXT"
+              c:type="GdkGLProc_glSecondaryColor3usEXT"/>
+      </field>
+      <field name="glSecondaryColor3usvEXT" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3usvEXT"
+              c:type="GdkGLProc_glSecondaryColor3usvEXT"/>
+      </field>
+      <field name="glSecondaryColorPointerEXT" writable="1">
+        <type name="GdkGLProc_glSecondaryColorPointerEXT"
+              c:type="GdkGLProc_glSecondaryColorPointerEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_stencil_two_side"
+            c:type="GdkGL_GL_EXT_stencil_two_side">
+      <field name="glActiveStencilFaceEXT" writable="1">
+        <type name="GdkGLProc_glActiveStencilFaceEXT"
+              c:type="GdkGLProc_glActiveStencilFaceEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_subtexture" c:type="GdkGL_GL_EXT_subtexture">
+      <field name="glTexSubImage1DEXT" writable="1">
+        <type name="GdkGLProc_glTexSubImage1DEXT"
+              c:type="GdkGLProc_glTexSubImage1DEXT"/>
+      </field>
+      <field name="glTexSubImage2DEXT" writable="1">
+        <type name="GdkGLProc_glTexSubImage2DEXT"
+              c:type="GdkGLProc_glTexSubImage2DEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_texture3D" c:type="GdkGL_GL_EXT_texture3D">
+      <field name="glTexImage3DEXT" writable="1">
+        <type name="GdkGLProc_glTexImage3DEXT"
+              c:type="GdkGLProc_glTexImage3DEXT"/>
+      </field>
+      <field name="glTexSubImage3DEXT" writable="1">
+        <type name="GdkGLProc_glTexSubImage3DEXT"
+              c:type="GdkGLProc_glTexSubImage3DEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_texture_object"
+            c:type="GdkGL_GL_EXT_texture_object">
+      <field name="glAreTexturesResidentEXT" writable="1">
+        <type name="GdkGLProc_glAreTexturesResidentEXT"
+              c:type="GdkGLProc_glAreTexturesResidentEXT"/>
+      </field>
+      <field name="glBindTextureEXT" writable="1">
+        <type name="GdkGLProc_glBindTextureEXT"
+              c:type="GdkGLProc_glBindTextureEXT"/>
+      </field>
+      <field name="glDeleteTexturesEXT" writable="1">
+        <type name="GdkGLProc_glDeleteTexturesEXT"
+              c:type="GdkGLProc_glDeleteTexturesEXT"/>
+      </field>
+      <field name="glGenTexturesEXT" writable="1">
+        <type name="GdkGLProc_glGenTexturesEXT"
+              c:type="GdkGLProc_glGenTexturesEXT"/>
+      </field>
+      <field name="glIsTextureEXT" writable="1">
+        <type name="GdkGLProc_glIsTextureEXT"
+              c:type="GdkGLProc_glIsTextureEXT"/>
+      </field>
+      <field name="glPrioritizeTexturesEXT" writable="1">
+        <type name="GdkGLProc_glPrioritizeTexturesEXT"
+              c:type="GdkGLProc_glPrioritizeTexturesEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_texture_perturb_normal"
+            c:type="GdkGL_GL_EXT_texture_perturb_normal">
+      <field name="glTextureNormalEXT" writable="1">
+        <type name="GdkGLProc_glTextureNormalEXT"
+              c:type="GdkGLProc_glTextureNormalEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_vertex_array" c:type="GdkGL_GL_EXT_vertex_array">
+      <field name="glArrayElementEXT" writable="1">
+        <type name="GdkGLProc_glArrayElementEXT"
+              c:type="GdkGLProc_glArrayElementEXT"/>
+      </field>
+      <field name="glColorPointerEXT" writable="1">
+        <type name="GdkGLProc_glColorPointerEXT"
+              c:type="GdkGLProc_glColorPointerEXT"/>
+      </field>
+      <field name="glDrawArraysEXT" writable="1">
+        <type name="GdkGLProc_glDrawArraysEXT"
+              c:type="GdkGLProc_glDrawArraysEXT"/>
+      </field>
+      <field name="glEdgeFlagPointerEXT" writable="1">
+        <type name="GdkGLProc_glEdgeFlagPointerEXT"
+              c:type="GdkGLProc_glEdgeFlagPointerEXT"/>
+      </field>
+      <field name="glGetPointervEXT" writable="1">
+        <type name="GdkGLProc_glGetPointervEXT"
+              c:type="GdkGLProc_glGetPointervEXT"/>
+      </field>
+      <field name="glIndexPointerEXT" writable="1">
+        <type name="GdkGLProc_glIndexPointerEXT"
+              c:type="GdkGLProc_glIndexPointerEXT"/>
+      </field>
+      <field name="glNormalPointerEXT" writable="1">
+        <type name="GdkGLProc_glNormalPointerEXT"
+              c:type="GdkGLProc_glNormalPointerEXT"/>
+      </field>
+      <field name="glTexCoordPointerEXT" writable="1">
+        <type name="GdkGLProc_glTexCoordPointerEXT"
+              c:type="GdkGLProc_glTexCoordPointerEXT"/>
+      </field>
+      <field name="glVertexPointerEXT" writable="1">
+        <type name="GdkGLProc_glVertexPointerEXT"
+              c:type="GdkGLProc_glVertexPointerEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_vertex_shader" c:type="GdkGL_GL_EXT_vertex_shader">
+      <field name="glBeginVertexShaderEXT" writable="1">
+        <type name="GdkGLProc_glBeginVertexShaderEXT"
+              c:type="GdkGLProc_glBeginVertexShaderEXT"/>
+      </field>
+      <field name="glEndVertexShaderEXT" writable="1">
+        <type name="GdkGLProc_glEndVertexShaderEXT"
+              c:type="GdkGLProc_glEndVertexShaderEXT"/>
+      </field>
+      <field name="glBindVertexShaderEXT" writable="1">
+        <type name="GdkGLProc_glBindVertexShaderEXT"
+              c:type="GdkGLProc_glBindVertexShaderEXT"/>
+      </field>
+      <field name="glGenVertexShadersEXT" writable="1">
+        <type name="GdkGLProc_glGenVertexShadersEXT"
+              c:type="GdkGLProc_glGenVertexShadersEXT"/>
+      </field>
+      <field name="glDeleteVertexShaderEXT" writable="1">
+        <type name="GdkGLProc_glDeleteVertexShaderEXT"
+              c:type="GdkGLProc_glDeleteVertexShaderEXT"/>
+      </field>
+      <field name="glShaderOp1EXT" writable="1">
+        <type name="GdkGLProc_glShaderOp1EXT"
+              c:type="GdkGLProc_glShaderOp1EXT"/>
+      </field>
+      <field name="glShaderOp2EXT" writable="1">
+        <type name="GdkGLProc_glShaderOp2EXT"
+              c:type="GdkGLProc_glShaderOp2EXT"/>
+      </field>
+      <field name="glShaderOp3EXT" writable="1">
+        <type name="GdkGLProc_glShaderOp3EXT"
+              c:type="GdkGLProc_glShaderOp3EXT"/>
+      </field>
+      <field name="glSwizzleEXT" writable="1">
+        <type name="GdkGLProc_glSwizzleEXT" c:type="GdkGLProc_glSwizzleEXT"/>
+      </field>
+      <field name="glWriteMaskEXT" writable="1">
+        <type name="GdkGLProc_glWriteMaskEXT"
+              c:type="GdkGLProc_glWriteMaskEXT"/>
+      </field>
+      <field name="glInsertComponentEXT" writable="1">
+        <type name="GdkGLProc_glInsertComponentEXT"
+              c:type="GdkGLProc_glInsertComponentEXT"/>
+      </field>
+      <field name="glExtractComponentEXT" writable="1">
+        <type name="GdkGLProc_glExtractComponentEXT"
+              c:type="GdkGLProc_glExtractComponentEXT"/>
+      </field>
+      <field name="glGenSymbolsEXT" writable="1">
+        <type name="GdkGLProc_glGenSymbolsEXT"
+              c:type="GdkGLProc_glGenSymbolsEXT"/>
+      </field>
+      <field name="glSetInvariantEXT" writable="1">
+        <type name="GdkGLProc_glSetInvariantEXT"
+              c:type="GdkGLProc_glSetInvariantEXT"/>
+      </field>
+      <field name="glSetLocalConstantEXT" writable="1">
+        <type name="GdkGLProc_glSetLocalConstantEXT"
+              c:type="GdkGLProc_glSetLocalConstantEXT"/>
+      </field>
+      <field name="glVariantbvEXT" writable="1">
+        <type name="GdkGLProc_glVariantbvEXT"
+              c:type="GdkGLProc_glVariantbvEXT"/>
+      </field>
+      <field name="glVariantsvEXT" writable="1">
+        <type name="GdkGLProc_glVariantsvEXT"
+              c:type="GdkGLProc_glVariantsvEXT"/>
+      </field>
+      <field name="glVariantivEXT" writable="1">
+        <type name="GdkGLProc_glVariantivEXT"
+              c:type="GdkGLProc_glVariantivEXT"/>
+      </field>
+      <field name="glVariantfvEXT" writable="1">
+        <type name="GdkGLProc_glVariantfvEXT"
+              c:type="GdkGLProc_glVariantfvEXT"/>
+      </field>
+      <field name="glVariantdvEXT" writable="1">
+        <type name="GdkGLProc_glVariantdvEXT"
+              c:type="GdkGLProc_glVariantdvEXT"/>
+      </field>
+      <field name="glVariantubvEXT" writable="1">
+        <type name="GdkGLProc_glVariantubvEXT"
+              c:type="GdkGLProc_glVariantubvEXT"/>
+      </field>
+      <field name="glVariantusvEXT" writable="1">
+        <type name="GdkGLProc_glVariantusvEXT"
+              c:type="GdkGLProc_glVariantusvEXT"/>
+      </field>
+      <field name="glVariantuivEXT" writable="1">
+        <type name="GdkGLProc_glVariantuivEXT"
+              c:type="GdkGLProc_glVariantuivEXT"/>
+      </field>
+      <field name="glVariantPointerEXT" writable="1">
+        <type name="GdkGLProc_glVariantPointerEXT"
+              c:type="GdkGLProc_glVariantPointerEXT"/>
+      </field>
+      <field name="glEnableVariantClientStateEXT" writable="1">
+        <type name="GdkGLProc_glEnableVariantClientStateEXT"
+              c:type="GdkGLProc_glEnableVariantClientStateEXT"/>
+      </field>
+      <field name="glDisableVariantClientStateEXT" writable="1">
+        <type name="GdkGLProc_glDisableVariantClientStateEXT"
+              c:type="GdkGLProc_glDisableVariantClientStateEXT"/>
+      </field>
+      <field name="glBindLightParameterEXT" writable="1">
+        <type name="GdkGLProc_glBindLightParameterEXT"
+              c:type="GdkGLProc_glBindLightParameterEXT"/>
+      </field>
+      <field name="glBindMaterialParameterEXT" writable="1">
+        <type name="GdkGLProc_glBindMaterialParameterEXT"
+              c:type="GdkGLProc_glBindMaterialParameterEXT"/>
+      </field>
+      <field name="glBindTexGenParameterEXT" writable="1">
+        <type name="GdkGLProc_glBindTexGenParameterEXT"
+              c:type="GdkGLProc_glBindTexGenParameterEXT"/>
+      </field>
+      <field name="glBindTextureUnitParameterEXT" writable="1">
+        <type name="GdkGLProc_glBindTextureUnitParameterEXT"
+              c:type="GdkGLProc_glBindTextureUnitParameterEXT"/>
+      </field>
+      <field name="glBindParameterEXT" writable="1">
+        <type name="GdkGLProc_glBindParameterEXT"
+              c:type="GdkGLProc_glBindParameterEXT"/>
+      </field>
+      <field name="glIsVariantEnabledEXT" writable="1">
+        <type name="GdkGLProc_glIsVariantEnabledEXT"
+              c:type="GdkGLProc_glIsVariantEnabledEXT"/>
+      </field>
+      <field name="glGetVariantBooleanvEXT" writable="1">
+        <type name="GdkGLProc_glGetVariantBooleanvEXT"
+              c:type="GdkGLProc_glGetVariantBooleanvEXT"/>
+      </field>
+      <field name="glGetVariantIntegervEXT" writable="1">
+        <type name="GdkGLProc_glGetVariantIntegervEXT"
+              c:type="GdkGLProc_glGetVariantIntegervEXT"/>
+      </field>
+      <field name="glGetVariantFloatvEXT" writable="1">
+        <type name="GdkGLProc_glGetVariantFloatvEXT"
+              c:type="GdkGLProc_glGetVariantFloatvEXT"/>
+      </field>
+      <field name="glGetVariantPointervEXT" writable="1">
+        <type name="GdkGLProc_glGetVariantPointervEXT"
+              c:type="GdkGLProc_glGetVariantPointervEXT"/>
+      </field>
+      <field name="glGetInvariantBooleanvEXT" writable="1">
+        <type name="GdkGLProc_glGetInvariantBooleanvEXT"
+              c:type="GdkGLProc_glGetInvariantBooleanvEXT"/>
+      </field>
+      <field name="glGetInvariantIntegervEXT" writable="1">
+        <type name="GdkGLProc_glGetInvariantIntegervEXT"
+              c:type="GdkGLProc_glGetInvariantIntegervEXT"/>
+      </field>
+      <field name="glGetInvariantFloatvEXT" writable="1">
+        <type name="GdkGLProc_glGetInvariantFloatvEXT"
+              c:type="GdkGLProc_glGetInvariantFloatvEXT"/>
+      </field>
+      <field name="glGetLocalConstantBooleanvEXT" writable="1">
+        <type name="GdkGLProc_glGetLocalConstantBooleanvEXT"
+              c:type="GdkGLProc_glGetLocalConstantBooleanvEXT"/>
+      </field>
+      <field name="glGetLocalConstantIntegervEXT" writable="1">
+        <type name="GdkGLProc_glGetLocalConstantIntegervEXT"
+              c:type="GdkGLProc_glGetLocalConstantIntegervEXT"/>
+      </field>
+      <field name="glGetLocalConstantFloatvEXT" writable="1">
+        <type name="GdkGLProc_glGetLocalConstantFloatvEXT"
+              c:type="GdkGLProc_glGetLocalConstantFloatvEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_EXT_vertex_weighting"
+            c:type="GdkGL_GL_EXT_vertex_weighting">
+      <field name="glVertexWeightfEXT" writable="1">
+        <type name="GdkGLProc_glVertexWeightfEXT"
+              c:type="GdkGLProc_glVertexWeightfEXT"/>
+      </field>
+      <field name="glVertexWeightfvEXT" writable="1">
+        <type name="GdkGLProc_glVertexWeightfvEXT"
+              c:type="GdkGLProc_glVertexWeightfvEXT"/>
+      </field>
+      <field name="glVertexWeightPointerEXT" writable="1">
+        <type name="GdkGLProc_glVertexWeightPointerEXT"
+              c:type="GdkGLProc_glVertexWeightPointerEXT"/>
+      </field>
+    </record>
+    <record name="GL_GL_HP_image_transform"
+            c:type="GdkGL_GL_HP_image_transform">
+      <field name="glImageTransformParameteriHP" writable="1">
+        <type name="GdkGLProc_glImageTransformParameteriHP"
+              c:type="GdkGLProc_glImageTransformParameteriHP"/>
+      </field>
+      <field name="glImageTransformParameterfHP" writable="1">
+        <type name="GdkGLProc_glImageTransformParameterfHP"
+              c:type="GdkGLProc_glImageTransformParameterfHP"/>
+      </field>
+      <field name="glImageTransformParameterivHP" writable="1">
+        <type name="GdkGLProc_glImageTransformParameterivHP"
+              c:type="GdkGLProc_glImageTransformParameterivHP"/>
+      </field>
+      <field name="glImageTransformParameterfvHP" writable="1">
+        <type name="GdkGLProc_glImageTransformParameterfvHP"
+              c:type="GdkGLProc_glImageTransformParameterfvHP"/>
+      </field>
+      <field name="glGetImageTransformParameterivHP" writable="1">
+        <type name="GdkGLProc_glGetImageTransformParameterivHP"
+              c:type="GdkGLProc_glGetImageTransformParameterivHP"/>
+      </field>
+      <field name="glGetImageTransformParameterfvHP" writable="1">
+        <type name="GdkGLProc_glGetImageTransformParameterfvHP"
+              c:type="GdkGLProc_glGetImageTransformParameterfvHP"/>
+      </field>
+    </record>
+    <record name="GL_GL_IBM_multimode_draw_arrays"
+            c:type="GdkGL_GL_IBM_multimode_draw_arrays">
+      <field name="glMultiModeDrawArraysIBM" writable="1">
+        <type name="GdkGLProc_glMultiModeDrawArraysIBM"
+              c:type="GdkGLProc_glMultiModeDrawArraysIBM"/>
+      </field>
+      <field name="glMultiModeDrawElementsIBM" writable="1">
+        <type name="GdkGLProc_glMultiModeDrawElementsIBM"
+              c:type="GdkGLProc_glMultiModeDrawElementsIBM"/>
+      </field>
+    </record>
+    <record name="GL_GL_IBM_static_data" c:type="GdkGL_GL_IBM_static_data">
+      <field name="glFlushStaticDataIBM" writable="1">
+        <type name="GdkGLProc_glFlushStaticDataIBM"
+              c:type="GdkGLProc_glFlushStaticDataIBM"/>
+      </field>
+    </record>
+    <record name="GL_GL_IBM_vertex_array_lists"
+            c:type="GdkGL_GL_IBM_vertex_array_lists">
+      <field name="glColorPointerListIBM" writable="1">
+        <type name="GdkGLProc_glColorPointerListIBM"
+              c:type="GdkGLProc_glColorPointerListIBM"/>
+      </field>
+      <field name="glSecondaryColorPointerListIBM" writable="1">
+        <type name="GdkGLProc_glSecondaryColorPointerListIBM"
+              c:type="GdkGLProc_glSecondaryColorPointerListIBM"/>
+      </field>
+      <field name="glEdgeFlagPointerListIBM" writable="1">
+        <type name="GdkGLProc_glEdgeFlagPointerListIBM"
+              c:type="GdkGLProc_glEdgeFlagPointerListIBM"/>
+      </field>
+      <field name="glFogCoordPointerListIBM" writable="1">
+        <type name="GdkGLProc_glFogCoordPointerListIBM"
+              c:type="GdkGLProc_glFogCoordPointerListIBM"/>
+      </field>
+      <field name="glIndexPointerListIBM" writable="1">
+        <type name="GdkGLProc_glIndexPointerListIBM"
+              c:type="GdkGLProc_glIndexPointerListIBM"/>
+      </field>
+      <field name="glNormalPointerListIBM" writable="1">
+        <type name="GdkGLProc_glNormalPointerListIBM"
+              c:type="GdkGLProc_glNormalPointerListIBM"/>
+      </field>
+      <field name="glTexCoordPointerListIBM" writable="1">
+        <type name="GdkGLProc_glTexCoordPointerListIBM"
+              c:type="GdkGLProc_glTexCoordPointerListIBM"/>
+      </field>
+      <field name="glVertexPointerListIBM" writable="1">
+        <type name="GdkGLProc_glVertexPointerListIBM"
+              c:type="GdkGLProc_glVertexPointerListIBM"/>
+      </field>
+    </record>
+    <record name="GL_GL_INGR_blend_func_separate"
+            c:type="GdkGL_GL_INGR_blend_func_separate">
+      <field name="glBlendFuncSeparateINGR" writable="1">
+        <type name="GdkGLProc_glBlendFuncSeparateINGR"
+              c:type="GdkGLProc_glBlendFuncSeparateINGR"/>
+      </field>
+    </record>
+    <record name="GL_GL_INTEL_parallel_arrays"
+            c:type="GdkGL_GL_INTEL_parallel_arrays">
+      <field name="glVertexPointervINTEL" writable="1">
+        <type name="GdkGLProc_glVertexPointervINTEL"
+              c:type="GdkGLProc_glVertexPointervINTEL"/>
+      </field>
+      <field name="glNormalPointervINTEL" writable="1">
+        <type name="GdkGLProc_glNormalPointervINTEL"
+              c:type="GdkGLProc_glNormalPointervINTEL"/>
+      </field>
+      <field name="glColorPointervINTEL" writable="1">
+        <type name="GdkGLProc_glColorPointervINTEL"
+              c:type="GdkGLProc_glColorPointervINTEL"/>
+      </field>
+      <field name="glTexCoordPointervINTEL" writable="1">
+        <type name="GdkGLProc_glTexCoordPointervINTEL"
+              c:type="GdkGLProc_glTexCoordPointervINTEL"/>
+      </field>
+    </record>
+    <record name="GL_GL_KTX_buffer_region" c:type="GdkGL_GL_KTX_buffer_region">
+      <field name="glBufferRegionEnabled" writable="1">
+        <type name="GdkGLProc_glBufferRegionEnabled"
+              c:type="GdkGLProc_glBufferRegionEnabled"/>
+      </field>
+      <field name="glNewBufferRegion" writable="1">
+        <type name="GdkGLProc_glNewBufferRegion"
+              c:type="GdkGLProc_glNewBufferRegion"/>
+      </field>
+      <field name="glDeleteBufferRegion" writable="1">
+        <type name="GdkGLProc_glDeleteBufferRegion"
+              c:type="GdkGLProc_glDeleteBufferRegion"/>
+      </field>
+      <field name="glReadBufferRegion" writable="1">
+        <type name="GdkGLProc_glReadBufferRegion"
+              c:type="GdkGLProc_glReadBufferRegion"/>
+      </field>
+      <field name="glDrawBufferRegion" writable="1">
+        <type name="GdkGLProc_glDrawBufferRegion"
+              c:type="GdkGLProc_glDrawBufferRegion"/>
+      </field>
+    </record>
+    <record name="GL_GL_MESA_resize_buffers"
+            c:type="GdkGL_GL_MESA_resize_buffers">
+      <field name="glResizeBuffersMESA" writable="1">
+        <type name="GdkGLProc_glResizeBuffersMESA"
+              c:type="GdkGLProc_glResizeBuffersMESA"/>
+      </field>
+    </record>
+    <record name="GL_GL_MESA_window_pos" c:type="GdkGL_GL_MESA_window_pos">
+      <field name="glWindowPos2dMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos2dMESA"
+              c:type="GdkGLProc_glWindowPos2dMESA"/>
+      </field>
+      <field name="glWindowPos2dvMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos2dvMESA"
+              c:type="GdkGLProc_glWindowPos2dvMESA"/>
+      </field>
+      <field name="glWindowPos2fMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos2fMESA"
+              c:type="GdkGLProc_glWindowPos2fMESA"/>
+      </field>
+      <field name="glWindowPos2fvMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos2fvMESA"
+              c:type="GdkGLProc_glWindowPos2fvMESA"/>
+      </field>
+      <field name="glWindowPos2iMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos2iMESA"
+              c:type="GdkGLProc_glWindowPos2iMESA"/>
+      </field>
+      <field name="glWindowPos2ivMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos2ivMESA"
+              c:type="GdkGLProc_glWindowPos2ivMESA"/>
+      </field>
+      <field name="glWindowPos2sMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos2sMESA"
+              c:type="GdkGLProc_glWindowPos2sMESA"/>
+      </field>
+      <field name="glWindowPos2svMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos2svMESA"
+              c:type="GdkGLProc_glWindowPos2svMESA"/>
+      </field>
+      <field name="glWindowPos3dMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos3dMESA"
+              c:type="GdkGLProc_glWindowPos3dMESA"/>
+      </field>
+      <field name="glWindowPos3dvMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos3dvMESA"
+              c:type="GdkGLProc_glWindowPos3dvMESA"/>
+      </field>
+      <field name="glWindowPos3fMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos3fMESA"
+              c:type="GdkGLProc_glWindowPos3fMESA"/>
+      </field>
+      <field name="glWindowPos3fvMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos3fvMESA"
+              c:type="GdkGLProc_glWindowPos3fvMESA"/>
+      </field>
+      <field name="glWindowPos3iMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos3iMESA"
+              c:type="GdkGLProc_glWindowPos3iMESA"/>
+      </field>
+      <field name="glWindowPos3ivMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos3ivMESA"
+              c:type="GdkGLProc_glWindowPos3ivMESA"/>
+      </field>
+      <field name="glWindowPos3sMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos3sMESA"
+              c:type="GdkGLProc_glWindowPos3sMESA"/>
+      </field>
+      <field name="glWindowPos3svMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos3svMESA"
+              c:type="GdkGLProc_glWindowPos3svMESA"/>
+      </field>
+      <field name="glWindowPos4dMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos4dMESA"
+              c:type="GdkGLProc_glWindowPos4dMESA"/>
+      </field>
+      <field name="glWindowPos4dvMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos4dvMESA"
+              c:type="GdkGLProc_glWindowPos4dvMESA"/>
+      </field>
+      <field name="glWindowPos4fMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos4fMESA"
+              c:type="GdkGLProc_glWindowPos4fMESA"/>
+      </field>
+      <field name="glWindowPos4fvMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos4fvMESA"
+              c:type="GdkGLProc_glWindowPos4fvMESA"/>
+      </field>
+      <field name="glWindowPos4iMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos4iMESA"
+              c:type="GdkGLProc_glWindowPos4iMESA"/>
+      </field>
+      <field name="glWindowPos4ivMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos4ivMESA"
+              c:type="GdkGLProc_glWindowPos4ivMESA"/>
+      </field>
+      <field name="glWindowPos4sMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos4sMESA"
+              c:type="GdkGLProc_glWindowPos4sMESA"/>
+      </field>
+      <field name="glWindowPos4svMESA" writable="1">
+        <type name="GdkGLProc_glWindowPos4svMESA"
+              c:type="GdkGLProc_glWindowPos4svMESA"/>
+      </field>
+    </record>
+    <record name="GL_GL_NV_element_array" c:type="GdkGL_GL_NV_element_array">
+      <field name="glElementPointerNV" writable="1">
+        <type name="GdkGLProc_glElementPointerNV"
+              c:type="GdkGLProc_glElementPointerNV"/>
+      </field>
+      <field name="glDrawElementArrayNV" writable="1">
+        <type name="GdkGLProc_glDrawElementArrayNV"
+              c:type="GdkGLProc_glDrawElementArrayNV"/>
+      </field>
+      <field name="glDrawRangeElementArrayNV" writable="1">
+        <type name="GdkGLProc_glDrawRangeElementArrayNV"
+              c:type="GdkGLProc_glDrawRangeElementArrayNV"/>
+      </field>
+      <field name="glMultiDrawElementArrayNV" writable="1">
+        <type name="GdkGLProc_glMultiDrawElementArrayNV"
+              c:type="GdkGLProc_glMultiDrawElementArrayNV"/>
+      </field>
+      <field name="glMultiDrawRangeElementArrayNV" writable="1">
+        <type name="GdkGLProc_glMultiDrawRangeElementArrayNV"
+              c:type="GdkGLProc_glMultiDrawRangeElementArrayNV"/>
+      </field>
+    </record>
+    <record name="GL_GL_NV_evaluators" c:type="GdkGL_GL_NV_evaluators">
+      <field name="glMapControlPointsNV" writable="1">
+        <type name="GdkGLProc_glMapControlPointsNV"
+              c:type="GdkGLProc_glMapControlPointsNV"/>
+      </field>
+      <field name="glMapParameterivNV" writable="1">
+        <type name="GdkGLProc_glMapParameterivNV"
+              c:type="GdkGLProc_glMapParameterivNV"/>
+      </field>
+      <field name="glMapParameterfvNV" writable="1">
+        <type name="GdkGLProc_glMapParameterfvNV"
+              c:type="GdkGLProc_glMapParameterfvNV"/>
+      </field>
+      <field name="glGetMapControlPointsNV" writable="1">
+        <type name="GdkGLProc_glGetMapControlPointsNV"
+              c:type="GdkGLProc_glGetMapControlPointsNV"/>
+      </field>
+      <field name="glGetMapParameterivNV" writable="1">
+        <type name="GdkGLProc_glGetMapParameterivNV"
+              c:type="GdkGLProc_glGetMapParameterivNV"/>
+      </field>
+      <field name="glGetMapParameterfvNV" writable="1">
+        <type name="GdkGLProc_glGetMapParameterfvNV"
+              c:type="GdkGLProc_glGetMapParameterfvNV"/>
+      </field>
+      <field name="glGetMapAttribParameterivNV" writable="1">
+        <type name="GdkGLProc_glGetMapAttribParameterivNV"
+              c:type="GdkGLProc_glGetMapAttribParameterivNV"/>
+      </field>
+      <field name="glGetMapAttribParameterfvNV" writable="1">
+        <type name="GdkGLProc_glGetMapAttribParameterfvNV"
+              c:type="GdkGLProc_glGetMapAttribParameterfvNV"/>
+      </field>
+      <field name="glEvalMapsNV" writable="1">
+        <type name="GdkGLProc_glEvalMapsNV" c:type="GdkGLProc_glEvalMapsNV"/>
+      </field>
+    </record>
+    <record name="GL_GL_NV_fence" c:type="GdkGL_GL_NV_fence">
+      <field name="glDeleteFencesNV" writable="1">
+        <type name="GdkGLProc_glDeleteFencesNV"
+              c:type="GdkGLProc_glDeleteFencesNV"/>
+      </field>
+      <field name="glGenFencesNV" writable="1">
+        <type name="GdkGLProc_glGenFencesNV" c:type="GdkGLProc_glGenFencesNV"/>
+      </field>
+      <field name="glIsFenceNV" writable="1">
+        <type name="GdkGLProc_glIsFenceNV" c:type="GdkGLProc_glIsFenceNV"/>
+      </field>
+      <field name="glTestFenceNV" writable="1">
+        <type name="GdkGLProc_glTestFenceNV" c:type="GdkGLProc_glTestFenceNV"/>
+      </field>
+      <field name="glGetFenceivNV" writable="1">
+        <type name="GdkGLProc_glGetFenceivNV"
+              c:type="GdkGLProc_glGetFenceivNV"/>
+      </field>
+      <field name="glFinishFenceNV" writable="1">
+        <type name="GdkGLProc_glFinishFenceNV"
+              c:type="GdkGLProc_glFinishFenceNV"/>
+      </field>
+      <field name="glSetFenceNV" writable="1">
+        <type name="GdkGLProc_glSetFenceNV" c:type="GdkGLProc_glSetFenceNV"/>
+      </field>
+    </record>
+    <record name="GL_GL_NV_fragment_program"
+            c:type="GdkGL_GL_NV_fragment_program">
+      <field name="glProgramNamedParameter4fNV" writable="1">
+        <type name="GdkGLProc_glProgramNamedParameter4fNV"
+              c:type="GdkGLProc_glProgramNamedParameter4fNV"/>
+      </field>
+      <field name="glProgramNamedParameter4dNV" writable="1">
+        <type name="GdkGLProc_glProgramNamedParameter4dNV"
+              c:type="GdkGLProc_glProgramNamedParameter4dNV"/>
+      </field>
+      <field name="glProgramNamedParameter4fvNV" writable="1">
+        <type name="GdkGLProc_glProgramNamedParameter4fvNV"
+              c:type="GdkGLProc_glProgramNamedParameter4fvNV"/>
+      </field>
+      <field name="glProgramNamedParameter4dvNV" writable="1">
+        <type name="GdkGLProc_glProgramNamedParameter4dvNV"
+              c:type="GdkGLProc_glProgramNamedParameter4dvNV"/>
+      </field>
+      <field name="glGetProgramNamedParameterfvNV" writable="1">
+        <type name="GdkGLProc_glGetProgramNamedParameterfvNV"
+              c:type="GdkGLProc_glGetProgramNamedParameterfvNV"/>
+      </field>
+      <field name="glGetProgramNamedParameterdvNV" writable="1">
+        <type name="GdkGLProc_glGetProgramNamedParameterdvNV"
+              c:type="GdkGLProc_glGetProgramNamedParameterdvNV"/>
+      </field>
+    </record>
+    <record name="GL_GL_NV_half_float" c:type="GdkGL_GL_NV_half_float">
+      <field name="glVertex2hNV" writable="1">
+        <type name="GdkGLProc_glVertex2hNV" c:type="GdkGLProc_glVertex2hNV"/>
+      </field>
+      <field name="glVertex2hvNV" writable="1">
+        <type name="GdkGLProc_glVertex2hvNV" c:type="GdkGLProc_glVertex2hvNV"/>
+      </field>
+      <field name="glVertex3hNV" writable="1">
+        <type name="GdkGLProc_glVertex3hNV" c:type="GdkGLProc_glVertex3hNV"/>
+      </field>
+      <field name="glVertex3hvNV" writable="1">
+        <type name="GdkGLProc_glVertex3hvNV" c:type="GdkGLProc_glVertex3hvNV"/>
+      </field>
+      <field name="glVertex4hNV" writable="1">
+        <type name="GdkGLProc_glVertex4hNV" c:type="GdkGLProc_glVertex4hNV"/>
+      </field>
+      <field name="glVertex4hvNV" writable="1">
+        <type name="GdkGLProc_glVertex4hvNV" c:type="GdkGLProc_glVertex4hvNV"/>
+      </field>
+      <field name="glNormal3hNV" writable="1">
+        <type name="GdkGLProc_glNormal3hNV" c:type="GdkGLProc_glNormal3hNV"/>
+      </field>
+      <field name="glNormal3hvNV" writable="1">
+        <type name="GdkGLProc_glNormal3hvNV" c:type="GdkGLProc_glNormal3hvNV"/>
+      </field>
+      <field name="glColor3hNV" writable="1">
+        <type name="GdkGLProc_glColor3hNV" c:type="GdkGLProc_glColor3hNV"/>
+      </field>
+      <field name="glColor3hvNV" writable="1">
+        <type name="GdkGLProc_glColor3hvNV" c:type="GdkGLProc_glColor3hvNV"/>
+      </field>
+      <field name="glColor4hNV" writable="1">
+        <type name="GdkGLProc_glColor4hNV" c:type="GdkGLProc_glColor4hNV"/>
+      </field>
+      <field name="glColor4hvNV" writable="1">
+        <type name="GdkGLProc_glColor4hvNV" c:type="GdkGLProc_glColor4hvNV"/>
+      </field>
+      <field name="glTexCoord1hNV" writable="1">
+        <type name="GdkGLProc_glTexCoord1hNV"
+              c:type="GdkGLProc_glTexCoord1hNV"/>
+      </field>
+      <field name="glTexCoord1hvNV" writable="1">
+        <type name="GdkGLProc_glTexCoord1hvNV"
+              c:type="GdkGLProc_glTexCoord1hvNV"/>
+      </field>
+      <field name="glTexCoord2hNV" writable="1">
+        <type name="GdkGLProc_glTexCoord2hNV"
+              c:type="GdkGLProc_glTexCoord2hNV"/>
+      </field>
+      <field name="glTexCoord2hvNV" writable="1">
+        <type name="GdkGLProc_glTexCoord2hvNV"
+              c:type="GdkGLProc_glTexCoord2hvNV"/>
+      </field>
+      <field name="glTexCoord3hNV" writable="1">
+        <type name="GdkGLProc_glTexCoord3hNV"
+              c:type="GdkGLProc_glTexCoord3hNV"/>
+      </field>
+      <field name="glTexCoord3hvNV" writable="1">
+        <type name="GdkGLProc_glTexCoord3hvNV"
+              c:type="GdkGLProc_glTexCoord3hvNV"/>
+      </field>
+      <field name="glTexCoord4hNV" writable="1">
+        <type name="GdkGLProc_glTexCoord4hNV"
+              c:type="GdkGLProc_glTexCoord4hNV"/>
+      </field>
+      <field name="glTexCoord4hvNV" writable="1">
+        <type name="GdkGLProc_glTexCoord4hvNV"
+              c:type="GdkGLProc_glTexCoord4hvNV"/>
+      </field>
+      <field name="glMultiTexCoord1hNV" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1hNV"
+              c:type="GdkGLProc_glMultiTexCoord1hNV"/>
+      </field>
+      <field name="glMultiTexCoord1hvNV" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1hvNV"
+              c:type="GdkGLProc_glMultiTexCoord1hvNV"/>
+      </field>
+      <field name="glMultiTexCoord2hNV" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2hNV"
+              c:type="GdkGLProc_glMultiTexCoord2hNV"/>
+      </field>
+      <field name="glMultiTexCoord2hvNV" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2hvNV"
+              c:type="GdkGLProc_glMultiTexCoord2hvNV"/>
+      </field>
+      <field name="glMultiTexCoord3hNV" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3hNV"
+              c:type="GdkGLProc_glMultiTexCoord3hNV"/>
+      </field>
+      <field name="glMultiTexCoord3hvNV" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3hvNV"
+              c:type="GdkGLProc_glMultiTexCoord3hvNV"/>
+      </field>
+      <field name="glMultiTexCoord4hNV" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4hNV"
+              c:type="GdkGLProc_glMultiTexCoord4hNV"/>
+      </field>
+      <field name="glMultiTexCoord4hvNV" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4hvNV"
+              c:type="GdkGLProc_glMultiTexCoord4hvNV"/>
+      </field>
+      <field name="glFogCoordhNV" writable="1">
+        <type name="GdkGLProc_glFogCoordhNV" c:type="GdkGLProc_glFogCoordhNV"/>
+      </field>
+      <field name="glFogCoordhvNV" writable="1">
+        <type name="GdkGLProc_glFogCoordhvNV"
+              c:type="GdkGLProc_glFogCoordhvNV"/>
+      </field>
+      <field name="glSecondaryColor3hNV" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3hNV"
+              c:type="GdkGLProc_glSecondaryColor3hNV"/>
+      </field>
+      <field name="glSecondaryColor3hvNV" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3hvNV"
+              c:type="GdkGLProc_glSecondaryColor3hvNV"/>
+      </field>
+      <field name="glVertexWeighthNV" writable="1">
+        <type name="GdkGLProc_glVertexWeighthNV"
+              c:type="GdkGLProc_glVertexWeighthNV"/>
+      </field>
+      <field name="glVertexWeighthvNV" writable="1">
+        <type name="GdkGLProc_glVertexWeighthvNV"
+              c:type="GdkGLProc_glVertexWeighthvNV"/>
+      </field>
+      <field name="glVertexAttrib1hNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib1hNV"
+              c:type="GdkGLProc_glVertexAttrib1hNV"/>
+      </field>
+      <field name="glVertexAttrib1hvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib1hvNV"
+              c:type="GdkGLProc_glVertexAttrib1hvNV"/>
+      </field>
+      <field name="glVertexAttrib2hNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib2hNV"
+              c:type="GdkGLProc_glVertexAttrib2hNV"/>
+      </field>
+      <field name="glVertexAttrib2hvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib2hvNV"
+              c:type="GdkGLProc_glVertexAttrib2hvNV"/>
+      </field>
+      <field name="glVertexAttrib3hNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib3hNV"
+              c:type="GdkGLProc_glVertexAttrib3hNV"/>
+      </field>
+      <field name="glVertexAttrib3hvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib3hvNV"
+              c:type="GdkGLProc_glVertexAttrib3hvNV"/>
+      </field>
+      <field name="glVertexAttrib4hNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4hNV"
+              c:type="GdkGLProc_glVertexAttrib4hNV"/>
+      </field>
+      <field name="glVertexAttrib4hvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4hvNV"
+              c:type="GdkGLProc_glVertexAttrib4hvNV"/>
+      </field>
+      <field name="glVertexAttribs1hvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttribs1hvNV"
+              c:type="GdkGLProc_glVertexAttribs1hvNV"/>
+      </field>
+      <field name="glVertexAttribs2hvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttribs2hvNV"
+              c:type="GdkGLProc_glVertexAttribs2hvNV"/>
+      </field>
+      <field name="glVertexAttribs3hvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttribs3hvNV"
+              c:type="GdkGLProc_glVertexAttribs3hvNV"/>
+      </field>
+      <field name="glVertexAttribs4hvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttribs4hvNV"
+              c:type="GdkGLProc_glVertexAttribs4hvNV"/>
+      </field>
+    </record>
+    <record name="GL_GL_NV_occlusion_query"
+            c:type="GdkGL_GL_NV_occlusion_query">
+      <field name="glGenOcclusionQueriesNV" writable="1">
+        <type name="GdkGLProc_glGenOcclusionQueriesNV"
+              c:type="GdkGLProc_glGenOcclusionQueriesNV"/>
+      </field>
+      <field name="glDeleteOcclusionQueriesNV" writable="1">
+        <type name="GdkGLProc_glDeleteOcclusionQueriesNV"
+              c:type="GdkGLProc_glDeleteOcclusionQueriesNV"/>
+      </field>
+      <field name="glIsOcclusionQueryNV" writable="1">
+        <type name="GdkGLProc_glIsOcclusionQueryNV"
+              c:type="GdkGLProc_glIsOcclusionQueryNV"/>
+      </field>
+      <field name="glBeginOcclusionQueryNV" writable="1">
+        <type name="GdkGLProc_glBeginOcclusionQueryNV"
+              c:type="GdkGLProc_glBeginOcclusionQueryNV"/>
+      </field>
+      <field name="glEndOcclusionQueryNV" writable="1">
+        <type name="GdkGLProc_glEndOcclusionQueryNV"
+              c:type="GdkGLProc_glEndOcclusionQueryNV"/>
+      </field>
+      <field name="glGetOcclusionQueryivNV" writable="1">
+        <type name="GdkGLProc_glGetOcclusionQueryivNV"
+              c:type="GdkGLProc_glGetOcclusionQueryivNV"/>
+      </field>
+      <field name="glGetOcclusionQueryuivNV" writable="1">
+        <type name="GdkGLProc_glGetOcclusionQueryuivNV"
+              c:type="GdkGLProc_glGetOcclusionQueryuivNV"/>
+      </field>
+    </record>
+    <record name="GL_GL_NV_pixel_data_range"
+            c:type="GdkGL_GL_NV_pixel_data_range">
+      <field name="glPixelDataRangeNV" writable="1">
+        <type name="GdkGLProc_glPixelDataRangeNV"
+              c:type="GdkGLProc_glPixelDataRangeNV"/>
+      </field>
+      <field name="glFlushPixelDataRangeNV" writable="1">
+        <type name="GdkGLProc_glFlushPixelDataRangeNV"
+              c:type="GdkGLProc_glFlushPixelDataRangeNV"/>
+      </field>
+    </record>
+    <record name="GL_GL_NV_point_sprite" c:type="GdkGL_GL_NV_point_sprite">
+      <field name="glPointParameteriNV" writable="1">
+        <type name="GdkGLProc_glPointParameteriNV"
+              c:type="GdkGLProc_glPointParameteriNV"/>
+      </field>
+      <field name="glPointParameterivNV" writable="1">
+        <type name="GdkGLProc_glPointParameterivNV"
+              c:type="GdkGLProc_glPointParameterivNV"/>
+      </field>
+    </record>
+    <record name="GL_GL_NV_primitive_restart"
+            c:type="GdkGL_GL_NV_primitive_restart">
+      <field name="glPrimitiveRestartNV" writable="1">
+        <type name="GdkGLProc_glPrimitiveRestartNV"
+              c:type="GdkGLProc_glPrimitiveRestartNV"/>
+      </field>
+      <field name="glPrimitiveRestartIndexNV" writable="1">
+        <type name="GdkGLProc_glPrimitiveRestartIndexNV"
+              c:type="GdkGLProc_glPrimitiveRestartIndexNV"/>
+      </field>
+    </record>
+    <record name="GL_GL_NV_register_combiners"
+            c:type="GdkGL_GL_NV_register_combiners">
+      <field name="glCombinerParameterfvNV" writable="1">
+        <type name="GdkGLProc_glCombinerParameterfvNV"
+              c:type="GdkGLProc_glCombinerParameterfvNV"/>
+      </field>
+      <field name="glCombinerParameterfNV" writable="1">
+        <type name="GdkGLProc_glCombinerParameterfNV"
+              c:type="GdkGLProc_glCombinerParameterfNV"/>
+      </field>
+      <field name="glCombinerParameterivNV" writable="1">
+        <type name="GdkGLProc_glCombinerParameterivNV"
+              c:type="GdkGLProc_glCombinerParameterivNV"/>
+      </field>
+      <field name="glCombinerParameteriNV" writable="1">
+        <type name="GdkGLProc_glCombinerParameteriNV"
+              c:type="GdkGLProc_glCombinerParameteriNV"/>
+      </field>
+      <field name="glCombinerInputNV" writable="1">
+        <type name="GdkGLProc_glCombinerInputNV"
+              c:type="GdkGLProc_glCombinerInputNV"/>
+      </field>
+      <field name="glCombinerOutputNV" writable="1">
+        <type name="GdkGLProc_glCombinerOutputNV"
+              c:type="GdkGLProc_glCombinerOutputNV"/>
+      </field>
+      <field name="glFinalCombinerInputNV" writable="1">
+        <type name="GdkGLProc_glFinalCombinerInputNV"
+              c:type="GdkGLProc_glFinalCombinerInputNV"/>
+      </field>
+      <field name="glGetCombinerInputParameterfvNV" writable="1">
+        <type name="GdkGLProc_glGetCombinerInputParameterfvNV"
+              c:type="GdkGLProc_glGetCombinerInputParameterfvNV"/>
+      </field>
+      <field name="glGetCombinerInputParameterivNV" writable="1">
+        <type name="GdkGLProc_glGetCombinerInputParameterivNV"
+              c:type="GdkGLProc_glGetCombinerInputParameterivNV"/>
+      </field>
+      <field name="glGetCombinerOutputParameterfvNV" writable="1">
+        <type name="GdkGLProc_glGetCombinerOutputParameterfvNV"
+              c:type="GdkGLProc_glGetCombinerOutputParameterfvNV"/>
+      </field>
+      <field name="glGetCombinerOutputParameterivNV" writable="1">
+        <type name="GdkGLProc_glGetCombinerOutputParameterivNV"
+              c:type="GdkGLProc_glGetCombinerOutputParameterivNV"/>
+      </field>
+      <field name="glGetFinalCombinerInputParameterfvNV" writable="1">
+        <type name="GdkGLProc_glGetFinalCombinerInputParameterfvNV"
+              c:type="GdkGLProc_glGetFinalCombinerInputParameterfvNV"/>
+      </field>
+      <field name="glGetFinalCombinerInputParameterivNV" writable="1">
+        <type name="GdkGLProc_glGetFinalCombinerInputParameterivNV"
+              c:type="GdkGLProc_glGetFinalCombinerInputParameterivNV"/>
+      </field>
+    </record>
+    <record name="GL_GL_NV_register_combiners2"
+            c:type="GdkGL_GL_NV_register_combiners2">
+      <field name="glCombinerStageParameterfvNV" writable="1">
+        <type name="GdkGLProc_glCombinerStageParameterfvNV"
+              c:type="GdkGLProc_glCombinerStageParameterfvNV"/>
+      </field>
+      <field name="glGetCombinerStageParameterfvNV" writable="1">
+        <type name="GdkGLProc_glGetCombinerStageParameterfvNV"
+              c:type="GdkGLProc_glGetCombinerStageParameterfvNV"/>
+      </field>
+    </record>
+    <record name="GL_GL_NV_stencil_two_side"
+            c:type="GdkGL_GL_NV_stencil_two_side">
+      <field name="glActiveStencilFaceNV" writable="1">
+        <type name="GdkGLProc_glActiveStencilFaceNV"
+              c:type="GdkGLProc_glActiveStencilFaceNV"/>
+      </field>
+    </record>
+    <record name="GL_GL_NV_vertex_array_range"
+            c:type="GdkGL_GL_NV_vertex_array_range">
+      <field name="glFlushVertexArrayRangeNV" writable="1">
+        <type name="GdkGLProc_glFlushVertexArrayRangeNV"
+              c:type="GdkGLProc_glFlushVertexArrayRangeNV"/>
+      </field>
+      <field name="glVertexArrayRangeNV" writable="1">
+        <type name="GdkGLProc_glVertexArrayRangeNV"
+              c:type="GdkGLProc_glVertexArrayRangeNV"/>
+      </field>
+    </record>
+    <record name="GL_GL_NV_vertex_program" c:type="GdkGL_GL_NV_vertex_program">
+      <field name="glAreProgramsResidentNV" writable="1">
+        <type name="GdkGLProc_glAreProgramsResidentNV"
+              c:type="GdkGLProc_glAreProgramsResidentNV"/>
+      </field>
+      <field name="glBindProgramNV" writable="1">
+        <type name="GdkGLProc_glBindProgramNV"
+              c:type="GdkGLProc_glBindProgramNV"/>
+      </field>
+      <field name="glDeleteProgramsNV" writable="1">
+        <type name="GdkGLProc_glDeleteProgramsNV"
+              c:type="GdkGLProc_glDeleteProgramsNV"/>
+      </field>
+      <field name="glExecuteProgramNV" writable="1">
+        <type name="GdkGLProc_glExecuteProgramNV"
+              c:type="GdkGLProc_glExecuteProgramNV"/>
+      </field>
+      <field name="glGenProgramsNV" writable="1">
+        <type name="GdkGLProc_glGenProgramsNV"
+              c:type="GdkGLProc_glGenProgramsNV"/>
+      </field>
+      <field name="glGetProgramParameterdvNV" writable="1">
+        <type name="GdkGLProc_glGetProgramParameterdvNV"
+              c:type="GdkGLProc_glGetProgramParameterdvNV"/>
+      </field>
+      <field name="glGetProgramParameterfvNV" writable="1">
+        <type name="GdkGLProc_glGetProgramParameterfvNV"
+              c:type="GdkGLProc_glGetProgramParameterfvNV"/>
+      </field>
+      <field name="glGetProgramivNV" writable="1">
+        <type name="GdkGLProc_glGetProgramivNV"
+              c:type="GdkGLProc_glGetProgramivNV"/>
+      </field>
+      <field name="glGetProgramStringNV" writable="1">
+        <type name="GdkGLProc_glGetProgramStringNV"
+              c:type="GdkGLProc_glGetProgramStringNV"/>
+      </field>
+      <field name="glGetTrackMatrixivNV" writable="1">
+        <type name="GdkGLProc_glGetTrackMatrixivNV"
+              c:type="GdkGLProc_glGetTrackMatrixivNV"/>
+      </field>
+      <field name="glGetVertexAttribdvNV" writable="1">
+        <type name="GdkGLProc_glGetVertexAttribdvNV"
+              c:type="GdkGLProc_glGetVertexAttribdvNV"/>
+      </field>
+      <field name="glGetVertexAttribfvNV" writable="1">
+        <type name="GdkGLProc_glGetVertexAttribfvNV"
+              c:type="GdkGLProc_glGetVertexAttribfvNV"/>
+      </field>
+      <field name="glGetVertexAttribivNV" writable="1">
+        <type name="GdkGLProc_glGetVertexAttribivNV"
+              c:type="GdkGLProc_glGetVertexAttribivNV"/>
+      </field>
+      <field name="glGetVertexAttribPointervNV" writable="1">
+        <type name="GdkGLProc_glGetVertexAttribPointervNV"
+              c:type="GdkGLProc_glGetVertexAttribPointervNV"/>
+      </field>
+      <field name="glIsProgramNV" writable="1">
+        <type name="GdkGLProc_glIsProgramNV" c:type="GdkGLProc_glIsProgramNV"/>
+      </field>
+      <field name="glLoadProgramNV" writable="1">
+        <type name="GdkGLProc_glLoadProgramNV"
+              c:type="GdkGLProc_glLoadProgramNV"/>
+      </field>
+      <field name="glProgramParameter4dNV" writable="1">
+        <type name="GdkGLProc_glProgramParameter4dNV"
+              c:type="GdkGLProc_glProgramParameter4dNV"/>
+      </field>
+      <field name="glProgramParameter4dvNV" writable="1">
+        <type name="GdkGLProc_glProgramParameter4dvNV"
+              c:type="GdkGLProc_glProgramParameter4dvNV"/>
+      </field>
+      <field name="glProgramParameter4fNV" writable="1">
+        <type name="GdkGLProc_glProgramParameter4fNV"
+              c:type="GdkGLProc_glProgramParameter4fNV"/>
+      </field>
+      <field name="glProgramParameter4fvNV" writable="1">
+        <type name="GdkGLProc_glProgramParameter4fvNV"
+              c:type="GdkGLProc_glProgramParameter4fvNV"/>
+      </field>
+      <field name="glProgramParameters4dvNV" writable="1">
+        <type name="GdkGLProc_glProgramParameters4dvNV"
+              c:type="GdkGLProc_glProgramParameters4dvNV"/>
+      </field>
+      <field name="glProgramParameters4fvNV" writable="1">
+        <type name="GdkGLProc_glProgramParameters4fvNV"
+              c:type="GdkGLProc_glProgramParameters4fvNV"/>
+      </field>
+      <field name="glRequestResidentProgramsNV" writable="1">
+        <type name="GdkGLProc_glRequestResidentProgramsNV"
+              c:type="GdkGLProc_glRequestResidentProgramsNV"/>
+      </field>
+      <field name="glTrackMatrixNV" writable="1">
+        <type name="GdkGLProc_glTrackMatrixNV"
+              c:type="GdkGLProc_glTrackMatrixNV"/>
+      </field>
+      <field name="glVertexAttribPointerNV" writable="1">
+        <type name="GdkGLProc_glVertexAttribPointerNV"
+              c:type="GdkGLProc_glVertexAttribPointerNV"/>
+      </field>
+      <field name="glVertexAttrib1dNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib1dNV"
+              c:type="GdkGLProc_glVertexAttrib1dNV"/>
+      </field>
+      <field name="glVertexAttrib1dvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib1dvNV"
+              c:type="GdkGLProc_glVertexAttrib1dvNV"/>
+      </field>
+      <field name="glVertexAttrib1fNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib1fNV"
+              c:type="GdkGLProc_glVertexAttrib1fNV"/>
+      </field>
+      <field name="glVertexAttrib1fvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib1fvNV"
+              c:type="GdkGLProc_glVertexAttrib1fvNV"/>
+      </field>
+      <field name="glVertexAttrib1sNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib1sNV"
+              c:type="GdkGLProc_glVertexAttrib1sNV"/>
+      </field>
+      <field name="glVertexAttrib1svNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib1svNV"
+              c:type="GdkGLProc_glVertexAttrib1svNV"/>
+      </field>
+      <field name="glVertexAttrib2dNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib2dNV"
+              c:type="GdkGLProc_glVertexAttrib2dNV"/>
+      </field>
+      <field name="glVertexAttrib2dvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib2dvNV"
+              c:type="GdkGLProc_glVertexAttrib2dvNV"/>
+      </field>
+      <field name="glVertexAttrib2fNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib2fNV"
+              c:type="GdkGLProc_glVertexAttrib2fNV"/>
+      </field>
+      <field name="glVertexAttrib2fvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib2fvNV"
+              c:type="GdkGLProc_glVertexAttrib2fvNV"/>
+      </field>
+      <field name="glVertexAttrib2sNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib2sNV"
+              c:type="GdkGLProc_glVertexAttrib2sNV"/>
+      </field>
+      <field name="glVertexAttrib2svNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib2svNV"
+              c:type="GdkGLProc_glVertexAttrib2svNV"/>
+      </field>
+      <field name="glVertexAttrib3dNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib3dNV"
+              c:type="GdkGLProc_glVertexAttrib3dNV"/>
+      </field>
+      <field name="glVertexAttrib3dvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib3dvNV"
+              c:type="GdkGLProc_glVertexAttrib3dvNV"/>
+      </field>
+      <field name="glVertexAttrib3fNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib3fNV"
+              c:type="GdkGLProc_glVertexAttrib3fNV"/>
+      </field>
+      <field name="glVertexAttrib3fvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib3fvNV"
+              c:type="GdkGLProc_glVertexAttrib3fvNV"/>
+      </field>
+      <field name="glVertexAttrib3sNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib3sNV"
+              c:type="GdkGLProc_glVertexAttrib3sNV"/>
+      </field>
+      <field name="glVertexAttrib3svNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib3svNV"
+              c:type="GdkGLProc_glVertexAttrib3svNV"/>
+      </field>
+      <field name="glVertexAttrib4dNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4dNV"
+              c:type="GdkGLProc_glVertexAttrib4dNV"/>
+      </field>
+      <field name="glVertexAttrib4dvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4dvNV"
+              c:type="GdkGLProc_glVertexAttrib4dvNV"/>
+      </field>
+      <field name="glVertexAttrib4fNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4fNV"
+              c:type="GdkGLProc_glVertexAttrib4fNV"/>
+      </field>
+      <field name="glVertexAttrib4fvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4fvNV"
+              c:type="GdkGLProc_glVertexAttrib4fvNV"/>
+      </field>
+      <field name="glVertexAttrib4sNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4sNV"
+              c:type="GdkGLProc_glVertexAttrib4sNV"/>
+      </field>
+      <field name="glVertexAttrib4svNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4svNV"
+              c:type="GdkGLProc_glVertexAttrib4svNV"/>
+      </field>
+      <field name="glVertexAttrib4ubNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4ubNV"
+              c:type="GdkGLProc_glVertexAttrib4ubNV"/>
+      </field>
+      <field name="glVertexAttrib4ubvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttrib4ubvNV"
+              c:type="GdkGLProc_glVertexAttrib4ubvNV"/>
+      </field>
+      <field name="glVertexAttribs1dvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttribs1dvNV"
+              c:type="GdkGLProc_glVertexAttribs1dvNV"/>
+      </field>
+      <field name="glVertexAttribs1fvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttribs1fvNV"
+              c:type="GdkGLProc_glVertexAttribs1fvNV"/>
+      </field>
+      <field name="glVertexAttribs1svNV" writable="1">
+        <type name="GdkGLProc_glVertexAttribs1svNV"
+              c:type="GdkGLProc_glVertexAttribs1svNV"/>
+      </field>
+      <field name="glVertexAttribs2dvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttribs2dvNV"
+              c:type="GdkGLProc_glVertexAttribs2dvNV"/>
+      </field>
+      <field name="glVertexAttribs2fvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttribs2fvNV"
+              c:type="GdkGLProc_glVertexAttribs2fvNV"/>
+      </field>
+      <field name="glVertexAttribs2svNV" writable="1">
+        <type name="GdkGLProc_glVertexAttribs2svNV"
+              c:type="GdkGLProc_glVertexAttribs2svNV"/>
+      </field>
+      <field name="glVertexAttribs3dvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttribs3dvNV"
+              c:type="GdkGLProc_glVertexAttribs3dvNV"/>
+      </field>
+      <field name="glVertexAttribs3fvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttribs3fvNV"
+              c:type="GdkGLProc_glVertexAttribs3fvNV"/>
+      </field>
+      <field name="glVertexAttribs3svNV" writable="1">
+        <type name="GdkGLProc_glVertexAttribs3svNV"
+              c:type="GdkGLProc_glVertexAttribs3svNV"/>
+      </field>
+      <field name="glVertexAttribs4dvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttribs4dvNV"
+              c:type="GdkGLProc_glVertexAttribs4dvNV"/>
+      </field>
+      <field name="glVertexAttribs4fvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttribs4fvNV"
+              c:type="GdkGLProc_glVertexAttribs4fvNV"/>
+      </field>
+      <field name="glVertexAttribs4svNV" writable="1">
+        <type name="GdkGLProc_glVertexAttribs4svNV"
+              c:type="GdkGLProc_glVertexAttribs4svNV"/>
+      </field>
+      <field name="glVertexAttribs4ubvNV" writable="1">
+        <type name="GdkGLProc_glVertexAttribs4ubvNV"
+              c:type="GdkGLProc_glVertexAttribs4ubvNV"/>
+      </field>
+    </record>
+    <record name="GL_GL_PGI_misc_hints" c:type="GdkGL_GL_PGI_misc_hints">
+      <field name="glHintPGI" writable="1">
+        <type name="GdkGLProc_glHintPGI" c:type="GdkGLProc_glHintPGI"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIS_detail_texture"
+            c:type="GdkGL_GL_SGIS_detail_texture">
+      <field name="glDetailTexFuncSGIS" writable="1">
+        <type name="GdkGLProc_glDetailTexFuncSGIS"
+              c:type="GdkGLProc_glDetailTexFuncSGIS"/>
+      </field>
+      <field name="glGetDetailTexFuncSGIS" writable="1">
+        <type name="GdkGLProc_glGetDetailTexFuncSGIS"
+              c:type="GdkGLProc_glGetDetailTexFuncSGIS"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIS_fog_function" c:type="GdkGL_GL_SGIS_fog_function">
+      <field name="glFogFuncSGIS" writable="1">
+        <type name="GdkGLProc_glFogFuncSGIS" c:type="GdkGLProc_glFogFuncSGIS"/>
+      </field>
+      <field name="glGetFogFuncSGIS" writable="1">
+        <type name="GdkGLProc_glGetFogFuncSGIS"
+              c:type="GdkGLProc_glGetFogFuncSGIS"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIS_multisample" c:type="GdkGL_GL_SGIS_multisample">
+      <field name="glSampleMaskSGIS" writable="1">
+        <type name="GdkGLProc_glSampleMaskSGIS"
+              c:type="GdkGLProc_glSampleMaskSGIS"/>
+      </field>
+      <field name="glSamplePatternSGIS" writable="1">
+        <type name="GdkGLProc_glSamplePatternSGIS"
+              c:type="GdkGLProc_glSamplePatternSGIS"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIS_multitexture" c:type="GdkGL_GL_SGIS_multitexture">
+      <field name="glMultiTexCoord1dSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1dSGIS"
+              c:type="GdkGLProc_glMultiTexCoord1dSGIS"/>
+      </field>
+      <field name="glMultiTexCoord1dvSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1dvSGIS"
+              c:type="GdkGLProc_glMultiTexCoord1dvSGIS"/>
+      </field>
+      <field name="glMultiTexCoord1fSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1fSGIS"
+              c:type="GdkGLProc_glMultiTexCoord1fSGIS"/>
+      </field>
+      <field name="glMultiTexCoord1fvSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1fvSGIS"
+              c:type="GdkGLProc_glMultiTexCoord1fvSGIS"/>
+      </field>
+      <field name="glMultiTexCoord1iSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1iSGIS"
+              c:type="GdkGLProc_glMultiTexCoord1iSGIS"/>
+      </field>
+      <field name="glMultiTexCoord1ivSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1ivSGIS"
+              c:type="GdkGLProc_glMultiTexCoord1ivSGIS"/>
+      </field>
+      <field name="glMultiTexCoord1sSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1sSGIS"
+              c:type="GdkGLProc_glMultiTexCoord1sSGIS"/>
+      </field>
+      <field name="glMultiTexCoord1svSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1svSGIS"
+              c:type="GdkGLProc_glMultiTexCoord1svSGIS"/>
+      </field>
+      <field name="glMultiTexCoord2dSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2dSGIS"
+              c:type="GdkGLProc_glMultiTexCoord2dSGIS"/>
+      </field>
+      <field name="glMultiTexCoord2dvSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2dvSGIS"
+              c:type="GdkGLProc_glMultiTexCoord2dvSGIS"/>
+      </field>
+      <field name="glMultiTexCoord2fSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2fSGIS"
+              c:type="GdkGLProc_glMultiTexCoord2fSGIS"/>
+      </field>
+      <field name="glMultiTexCoord2fvSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2fvSGIS"
+              c:type="GdkGLProc_glMultiTexCoord2fvSGIS"/>
+      </field>
+      <field name="glMultiTexCoord2iSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2iSGIS"
+              c:type="GdkGLProc_glMultiTexCoord2iSGIS"/>
+      </field>
+      <field name="glMultiTexCoord2ivSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2ivSGIS"
+              c:type="GdkGLProc_glMultiTexCoord2ivSGIS"/>
+      </field>
+      <field name="glMultiTexCoord2sSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2sSGIS"
+              c:type="GdkGLProc_glMultiTexCoord2sSGIS"/>
+      </field>
+      <field name="glMultiTexCoord2svSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2svSGIS"
+              c:type="GdkGLProc_glMultiTexCoord2svSGIS"/>
+      </field>
+      <field name="glMultiTexCoord3dSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3dSGIS"
+              c:type="GdkGLProc_glMultiTexCoord3dSGIS"/>
+      </field>
+      <field name="glMultiTexCoord3dvSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3dvSGIS"
+              c:type="GdkGLProc_glMultiTexCoord3dvSGIS"/>
+      </field>
+      <field name="glMultiTexCoord3fSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3fSGIS"
+              c:type="GdkGLProc_glMultiTexCoord3fSGIS"/>
+      </field>
+      <field name="glMultiTexCoord3fvSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3fvSGIS"
+              c:type="GdkGLProc_glMultiTexCoord3fvSGIS"/>
+      </field>
+      <field name="glMultiTexCoord3iSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3iSGIS"
+              c:type="GdkGLProc_glMultiTexCoord3iSGIS"/>
+      </field>
+      <field name="glMultiTexCoord3ivSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3ivSGIS"
+              c:type="GdkGLProc_glMultiTexCoord3ivSGIS"/>
+      </field>
+      <field name="glMultiTexCoord3sSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3sSGIS"
+              c:type="GdkGLProc_glMultiTexCoord3sSGIS"/>
+      </field>
+      <field name="glMultiTexCoord3svSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3svSGIS"
+              c:type="GdkGLProc_glMultiTexCoord3svSGIS"/>
+      </field>
+      <field name="glMultiTexCoord4dSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4dSGIS"
+              c:type="GdkGLProc_glMultiTexCoord4dSGIS"/>
+      </field>
+      <field name="glMultiTexCoord4dvSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4dvSGIS"
+              c:type="GdkGLProc_glMultiTexCoord4dvSGIS"/>
+      </field>
+      <field name="glMultiTexCoord4fSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4fSGIS"
+              c:type="GdkGLProc_glMultiTexCoord4fSGIS"/>
+      </field>
+      <field name="glMultiTexCoord4fvSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4fvSGIS"
+              c:type="GdkGLProc_glMultiTexCoord4fvSGIS"/>
+      </field>
+      <field name="glMultiTexCoord4iSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4iSGIS"
+              c:type="GdkGLProc_glMultiTexCoord4iSGIS"/>
+      </field>
+      <field name="glMultiTexCoord4ivSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4ivSGIS"
+              c:type="GdkGLProc_glMultiTexCoord4ivSGIS"/>
+      </field>
+      <field name="glMultiTexCoord4sSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4sSGIS"
+              c:type="GdkGLProc_glMultiTexCoord4sSGIS"/>
+      </field>
+      <field name="glMultiTexCoord4svSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4svSGIS"
+              c:type="GdkGLProc_glMultiTexCoord4svSGIS"/>
+      </field>
+      <field name="glMultiTexCoordPointerSGIS" writable="1">
+        <type name="GdkGLProc_glMultiTexCoordPointerSGIS"
+              c:type="GdkGLProc_glMultiTexCoordPointerSGIS"/>
+      </field>
+      <field name="glSelectTextureSGIS" writable="1">
+        <type name="GdkGLProc_glSelectTextureSGIS"
+              c:type="GdkGLProc_glSelectTextureSGIS"/>
+      </field>
+      <field name="glSelectTextureCoordSetSGIS" writable="1">
+        <type name="GdkGLProc_glSelectTextureCoordSetSGIS"
+              c:type="GdkGLProc_glSelectTextureCoordSetSGIS"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIS_pixel_texture"
+            c:type="GdkGL_GL_SGIS_pixel_texture">
+      <field name="glPixelTexGenParameteriSGIS" writable="1">
+        <type name="GdkGLProc_glPixelTexGenParameteriSGIS"
+              c:type="GdkGLProc_glPixelTexGenParameteriSGIS"/>
+      </field>
+      <field name="glPixelTexGenParameterivSGIS" writable="1">
+        <type name="GdkGLProc_glPixelTexGenParameterivSGIS"
+              c:type="GdkGLProc_glPixelTexGenParameterivSGIS"/>
+      </field>
+      <field name="glPixelTexGenParameterfSGIS" writable="1">
+        <type name="GdkGLProc_glPixelTexGenParameterfSGIS"
+              c:type="GdkGLProc_glPixelTexGenParameterfSGIS"/>
+      </field>
+      <field name="glPixelTexGenParameterfvSGIS" writable="1">
+        <type name="GdkGLProc_glPixelTexGenParameterfvSGIS"
+              c:type="GdkGLProc_glPixelTexGenParameterfvSGIS"/>
+      </field>
+      <field name="glGetPixelTexGenParameterivSGIS" writable="1">
+        <type name="GdkGLProc_glGetPixelTexGenParameterivSGIS"
+              c:type="GdkGLProc_glGetPixelTexGenParameterivSGIS"/>
+      </field>
+      <field name="glGetPixelTexGenParameterfvSGIS" writable="1">
+        <type name="GdkGLProc_glGetPixelTexGenParameterfvSGIS"
+              c:type="GdkGLProc_glGetPixelTexGenParameterfvSGIS"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIS_point_parameters"
+            c:type="GdkGL_GL_SGIS_point_parameters">
+      <field name="glPointParameterfSGIS" writable="1">
+        <type name="GdkGLProc_glPointParameterfSGIS"
+              c:type="GdkGLProc_glPointParameterfSGIS"/>
+      </field>
+      <field name="glPointParameterfvSGIS" writable="1">
+        <type name="GdkGLProc_glPointParameterfvSGIS"
+              c:type="GdkGLProc_glPointParameterfvSGIS"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIS_sharpen_texture"
+            c:type="GdkGL_GL_SGIS_sharpen_texture">
+      <field name="glSharpenTexFuncSGIS" writable="1">
+        <type name="GdkGLProc_glSharpenTexFuncSGIS"
+              c:type="GdkGLProc_glSharpenTexFuncSGIS"/>
+      </field>
+      <field name="glGetSharpenTexFuncSGIS" writable="1">
+        <type name="GdkGLProc_glGetSharpenTexFuncSGIS"
+              c:type="GdkGLProc_glGetSharpenTexFuncSGIS"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIS_texture4D" c:type="GdkGL_GL_SGIS_texture4D">
+      <field name="glTexImage4DSGIS" writable="1">
+        <type name="GdkGLProc_glTexImage4DSGIS"
+              c:type="GdkGLProc_glTexImage4DSGIS"/>
+      </field>
+      <field name="glTexSubImage4DSGIS" writable="1">
+        <type name="GdkGLProc_glTexSubImage4DSGIS"
+              c:type="GdkGLProc_glTexSubImage4DSGIS"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIS_texture_color_mask"
+            c:type="GdkGL_GL_SGIS_texture_color_mask">
+      <field name="glTextureColorMaskSGIS" writable="1">
+        <type name="GdkGLProc_glTextureColorMaskSGIS"
+              c:type="GdkGLProc_glTextureColorMaskSGIS"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIS_texture_filter4"
+            c:type="GdkGL_GL_SGIS_texture_filter4">
+      <field name="glGetTexFilterFuncSGIS" writable="1">
+        <type name="GdkGLProc_glGetTexFilterFuncSGIS"
+              c:type="GdkGLProc_glGetTexFilterFuncSGIS"/>
+      </field>
+      <field name="glTexFilterFuncSGIS" writable="1">
+        <type name="GdkGLProc_glTexFilterFuncSGIS"
+              c:type="GdkGLProc_glTexFilterFuncSGIS"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIX_async" c:type="GdkGL_GL_SGIX_async">
+      <field name="glAsyncMarkerSGIX" writable="1">
+        <type name="GdkGLProc_glAsyncMarkerSGIX"
+              c:type="GdkGLProc_glAsyncMarkerSGIX"/>
+      </field>
+      <field name="glFinishAsyncSGIX" writable="1">
+        <type name="GdkGLProc_glFinishAsyncSGIX"
+              c:type="GdkGLProc_glFinishAsyncSGIX"/>
+      </field>
+      <field name="glPollAsyncSGIX" writable="1">
+        <type name="GdkGLProc_glPollAsyncSGIX"
+              c:type="GdkGLProc_glPollAsyncSGIX"/>
+      </field>
+      <field name="glGenAsyncMarkersSGIX" writable="1">
+        <type name="GdkGLProc_glGenAsyncMarkersSGIX"
+              c:type="GdkGLProc_glGenAsyncMarkersSGIX"/>
+      </field>
+      <field name="glDeleteAsyncMarkersSGIX" writable="1">
+        <type name="GdkGLProc_glDeleteAsyncMarkersSGIX"
+              c:type="GdkGLProc_glDeleteAsyncMarkersSGIX"/>
+      </field>
+      <field name="glIsAsyncMarkerSGIX" writable="1">
+        <type name="GdkGLProc_glIsAsyncMarkerSGIX"
+              c:type="GdkGLProc_glIsAsyncMarkerSGIX"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIX_flush_raster" c:type="GdkGL_GL_SGIX_flush_raster">
+      <field name="glFlushRasterSGIX" writable="1">
+        <type name="GdkGLProc_glFlushRasterSGIX"
+              c:type="GdkGLProc_glFlushRasterSGIX"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIX_fog_texture" c:type="GdkGL_GL_SGIX_fog_texture">
+      <field name="glTextureFogSGIX" writable="1">
+        <type name="GdkGLProc_glTextureFogSGIX"
+              c:type="GdkGLProc_glTextureFogSGIX"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIX_fragment_lighting"
+            c:type="GdkGL_GL_SGIX_fragment_lighting">
+      <field name="glFragmentColorMaterialSGIX" writable="1">
+        <type name="GdkGLProc_glFragmentColorMaterialSGIX"
+              c:type="GdkGLProc_glFragmentColorMaterialSGIX"/>
+      </field>
+      <field name="glFragmentLightfSGIX" writable="1">
+        <type name="GdkGLProc_glFragmentLightfSGIX"
+              c:type="GdkGLProc_glFragmentLightfSGIX"/>
+      </field>
+      <field name="glFragmentLightfvSGIX" writable="1">
+        <type name="GdkGLProc_glFragmentLightfvSGIX"
+              c:type="GdkGLProc_glFragmentLightfvSGIX"/>
+      </field>
+      <field name="glFragmentLightiSGIX" writable="1">
+        <type name="GdkGLProc_glFragmentLightiSGIX"
+              c:type="GdkGLProc_glFragmentLightiSGIX"/>
+      </field>
+      <field name="glFragmentLightivSGIX" writable="1">
+        <type name="GdkGLProc_glFragmentLightivSGIX"
+              c:type="GdkGLProc_glFragmentLightivSGIX"/>
+      </field>
+      <field name="glFragmentLightModelfSGIX" writable="1">
+        <type name="GdkGLProc_glFragmentLightModelfSGIX"
+              c:type="GdkGLProc_glFragmentLightModelfSGIX"/>
+      </field>
+      <field name="glFragmentLightModelfvSGIX" writable="1">
+        <type name="GdkGLProc_glFragmentLightModelfvSGIX"
+              c:type="GdkGLProc_glFragmentLightModelfvSGIX"/>
+      </field>
+      <field name="glFragmentLightModeliSGIX" writable="1">
+        <type name="GdkGLProc_glFragmentLightModeliSGIX"
+              c:type="GdkGLProc_glFragmentLightModeliSGIX"/>
+      </field>
+      <field name="glFragmentLightModelivSGIX" writable="1">
+        <type name="GdkGLProc_glFragmentLightModelivSGIX"
+              c:type="GdkGLProc_glFragmentLightModelivSGIX"/>
+      </field>
+      <field name="glFragmentMaterialfSGIX" writable="1">
+        <type name="GdkGLProc_glFragmentMaterialfSGIX"
+              c:type="GdkGLProc_glFragmentMaterialfSGIX"/>
+      </field>
+      <field name="glFragmentMaterialfvSGIX" writable="1">
+        <type name="GdkGLProc_glFragmentMaterialfvSGIX"
+              c:type="GdkGLProc_glFragmentMaterialfvSGIX"/>
+      </field>
+      <field name="glFragmentMaterialiSGIX" writable="1">
+        <type name="GdkGLProc_glFragmentMaterialiSGIX"
+              c:type="GdkGLProc_glFragmentMaterialiSGIX"/>
+      </field>
+      <field name="glFragmentMaterialivSGIX" writable="1">
+        <type name="GdkGLProc_glFragmentMaterialivSGIX"
+              c:type="GdkGLProc_glFragmentMaterialivSGIX"/>
+      </field>
+      <field name="glGetFragmentLightfvSGIX" writable="1">
+        <type name="GdkGLProc_glGetFragmentLightfvSGIX"
+              c:type="GdkGLProc_glGetFragmentLightfvSGIX"/>
+      </field>
+      <field name="glGetFragmentLightivSGIX" writable="1">
+        <type name="GdkGLProc_glGetFragmentLightivSGIX"
+              c:type="GdkGLProc_glGetFragmentLightivSGIX"/>
+      </field>
+      <field name="glGetFragmentMaterialfvSGIX" writable="1">
+        <type name="GdkGLProc_glGetFragmentMaterialfvSGIX"
+              c:type="GdkGLProc_glGetFragmentMaterialfvSGIX"/>
+      </field>
+      <field name="glGetFragmentMaterialivSGIX" writable="1">
+        <type name="GdkGLProc_glGetFragmentMaterialivSGIX"
+              c:type="GdkGLProc_glGetFragmentMaterialivSGIX"/>
+      </field>
+      <field name="glLightEnviSGIX" writable="1">
+        <type name="GdkGLProc_glLightEnviSGIX"
+              c:type="GdkGLProc_glLightEnviSGIX"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIX_framezoom" c:type="GdkGL_GL_SGIX_framezoom">
+      <field name="glFrameZoomSGIX" writable="1">
+        <type name="GdkGLProc_glFrameZoomSGIX"
+              c:type="GdkGLProc_glFrameZoomSGIX"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIX_igloo_interface"
+            c:type="GdkGL_GL_SGIX_igloo_interface">
+      <field name="glIglooInterfaceSGIX" writable="1">
+        <type name="GdkGLProc_glIglooInterfaceSGIX"
+              c:type="GdkGLProc_glIglooInterfaceSGIX"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIX_instruments" c:type="GdkGL_GL_SGIX_instruments">
+      <field name="glGetInstrumentsSGIX" writable="1">
+        <type name="GdkGLProc_glGetInstrumentsSGIX"
+              c:type="GdkGLProc_glGetInstrumentsSGIX"/>
+      </field>
+      <field name="glInstrumentsBufferSGIX" writable="1">
+        <type name="GdkGLProc_glInstrumentsBufferSGIX"
+              c:type="GdkGLProc_glInstrumentsBufferSGIX"/>
+      </field>
+      <field name="glPollInstrumentsSGIX" writable="1">
+        <type name="GdkGLProc_glPollInstrumentsSGIX"
+              c:type="GdkGLProc_glPollInstrumentsSGIX"/>
+      </field>
+      <field name="glReadInstrumentsSGIX" writable="1">
+        <type name="GdkGLProc_glReadInstrumentsSGIX"
+              c:type="GdkGLProc_glReadInstrumentsSGIX"/>
+      </field>
+      <field name="glStartInstrumentsSGIX" writable="1">
+        <type name="GdkGLProc_glStartInstrumentsSGIX"
+              c:type="GdkGLProc_glStartInstrumentsSGIX"/>
+      </field>
+      <field name="glStopInstrumentsSGIX" writable="1">
+        <type name="GdkGLProc_glStopInstrumentsSGIX"
+              c:type="GdkGLProc_glStopInstrumentsSGIX"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIX_list_priority"
+            c:type="GdkGL_GL_SGIX_list_priority">
+      <field name="glGetListParameterfvSGIX" writable="1">
+        <type name="GdkGLProc_glGetListParameterfvSGIX"
+              c:type="GdkGLProc_glGetListParameterfvSGIX"/>
+      </field>
+      <field name="glGetListParameterivSGIX" writable="1">
+        <type name="GdkGLProc_glGetListParameterivSGIX"
+              c:type="GdkGLProc_glGetListParameterivSGIX"/>
+      </field>
+      <field name="glListParameterfSGIX" writable="1">
+        <type name="GdkGLProc_glListParameterfSGIX"
+              c:type="GdkGLProc_glListParameterfSGIX"/>
+      </field>
+      <field name="glListParameterfvSGIX" writable="1">
+        <type name="GdkGLProc_glListParameterfvSGIX"
+              c:type="GdkGLProc_glListParameterfvSGIX"/>
+      </field>
+      <field name="glListParameteriSGIX" writable="1">
+        <type name="GdkGLProc_glListParameteriSGIX"
+              c:type="GdkGLProc_glListParameteriSGIX"/>
+      </field>
+      <field name="glListParameterivSGIX" writable="1">
+        <type name="GdkGLProc_glListParameterivSGIX"
+              c:type="GdkGLProc_glListParameterivSGIX"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIX_pixel_texture"
+            c:type="GdkGL_GL_SGIX_pixel_texture">
+      <field name="glPixelTexGenSGIX" writable="1">
+        <type name="GdkGLProc_glPixelTexGenSGIX"
+              c:type="GdkGLProc_glPixelTexGenSGIX"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIX_polynomial_ffd"
+            c:type="GdkGL_GL_SGIX_polynomial_ffd">
+      <field name="glDeformationMap3dSGIX" writable="1">
+        <type name="GdkGLProc_glDeformationMap3dSGIX"
+              c:type="GdkGLProc_glDeformationMap3dSGIX"/>
+      </field>
+      <field name="glDeformationMap3fSGIX" writable="1">
+        <type name="GdkGLProc_glDeformationMap3fSGIX"
+              c:type="GdkGLProc_glDeformationMap3fSGIX"/>
+      </field>
+      <field name="glDeformSGIX" writable="1">
+        <type name="GdkGLProc_glDeformSGIX" c:type="GdkGLProc_glDeformSGIX"/>
+      </field>
+      <field name="glLoadIdentityDeformationMapSGIX" writable="1">
+        <type name="GdkGLProc_glLoadIdentityDeformationMapSGIX"
+              c:type="GdkGLProc_glLoadIdentityDeformationMapSGIX"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIX_reference_plane"
+            c:type="GdkGL_GL_SGIX_reference_plane">
+      <field name="glReferencePlaneSGIX" writable="1">
+        <type name="GdkGLProc_glReferencePlaneSGIX"
+              c:type="GdkGLProc_glReferencePlaneSGIX"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIX_sprite" c:type="GdkGL_GL_SGIX_sprite">
+      <field name="glSpriteParameterfSGIX" writable="1">
+        <type name="GdkGLProc_glSpriteParameterfSGIX"
+              c:type="GdkGLProc_glSpriteParameterfSGIX"/>
+      </field>
+      <field name="glSpriteParameterfvSGIX" writable="1">
+        <type name="GdkGLProc_glSpriteParameterfvSGIX"
+              c:type="GdkGLProc_glSpriteParameterfvSGIX"/>
+      </field>
+      <field name="glSpriteParameteriSGIX" writable="1">
+        <type name="GdkGLProc_glSpriteParameteriSGIX"
+              c:type="GdkGLProc_glSpriteParameteriSGIX"/>
+      </field>
+      <field name="glSpriteParameterivSGIX" writable="1">
+        <type name="GdkGLProc_glSpriteParameterivSGIX"
+              c:type="GdkGLProc_glSpriteParameterivSGIX"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGIX_tag_sample_buffer"
+            c:type="GdkGL_GL_SGIX_tag_sample_buffer">
+      <field name="glTagSampleBufferSGIX" writable="1">
+        <type name="GdkGLProc_glTagSampleBufferSGIX"
+              c:type="GdkGLProc_glTagSampleBufferSGIX"/>
+      </field>
+    </record>
+    <record name="GL_GL_SGI_color_table" c:type="GdkGL_GL_SGI_color_table">
+      <field name="glColorTableSGI" writable="1">
+        <type name="GdkGLProc_glColorTableSGI"
+              c:type="GdkGLProc_glColorTableSGI"/>
+      </field>
+      <field name="glColorTableParameterfvSGI" writable="1">
+        <type name="GdkGLProc_glColorTableParameterfvSGI"
+              c:type="GdkGLProc_glColorTableParameterfvSGI"/>
+      </field>
+      <field name="glColorTableParameterivSGI" writable="1">
+        <type name="GdkGLProc_glColorTableParameterivSGI"
+              c:type="GdkGLProc_glColorTableParameterivSGI"/>
+      </field>
+      <field name="glCopyColorTableSGI" writable="1">
+        <type name="GdkGLProc_glCopyColorTableSGI"
+              c:type="GdkGLProc_glCopyColorTableSGI"/>
+      </field>
+      <field name="glGetColorTableSGI" writable="1">
+        <type name="GdkGLProc_glGetColorTableSGI"
+              c:type="GdkGLProc_glGetColorTableSGI"/>
+      </field>
+      <field name="glGetColorTableParameterfvSGI" writable="1">
+        <type name="GdkGLProc_glGetColorTableParameterfvSGI"
+              c:type="GdkGLProc_glGetColorTableParameterfvSGI"/>
+      </field>
+      <field name="glGetColorTableParameterivSGI" writable="1">
+        <type name="GdkGLProc_glGetColorTableParameterivSGI"
+              c:type="GdkGLProc_glGetColorTableParameterivSGI"/>
+      </field>
+    </record>
+    <record name="GL_GL_SUNX_constant_data"
+            c:type="GdkGL_GL_SUNX_constant_data">
+      <field name="glFinishTextureSUNX" writable="1">
+        <type name="GdkGLProc_glFinishTextureSUNX"
+              c:type="GdkGLProc_glFinishTextureSUNX"/>
+      </field>
+    </record>
+    <record name="GL_GL_SUN_global_alpha" c:type="GdkGL_GL_SUN_global_alpha">
+      <field name="glGlobalAlphaFactorbSUN" writable="1">
+        <type name="GdkGLProc_glGlobalAlphaFactorbSUN"
+              c:type="GdkGLProc_glGlobalAlphaFactorbSUN"/>
+      </field>
+      <field name="glGlobalAlphaFactorsSUN" writable="1">
+        <type name="GdkGLProc_glGlobalAlphaFactorsSUN"
+              c:type="GdkGLProc_glGlobalAlphaFactorsSUN"/>
+      </field>
+      <field name="glGlobalAlphaFactoriSUN" writable="1">
+        <type name="GdkGLProc_glGlobalAlphaFactoriSUN"
+              c:type="GdkGLProc_glGlobalAlphaFactoriSUN"/>
+      </field>
+      <field name="glGlobalAlphaFactorfSUN" writable="1">
+        <type name="GdkGLProc_glGlobalAlphaFactorfSUN"
+              c:type="GdkGLProc_glGlobalAlphaFactorfSUN"/>
+      </field>
+      <field name="glGlobalAlphaFactordSUN" writable="1">
+        <type name="GdkGLProc_glGlobalAlphaFactordSUN"
+              c:type="GdkGLProc_glGlobalAlphaFactordSUN"/>
+      </field>
+      <field name="glGlobalAlphaFactorubSUN" writable="1">
+        <type name="GdkGLProc_glGlobalAlphaFactorubSUN"
+              c:type="GdkGLProc_glGlobalAlphaFactorubSUN"/>
+      </field>
+      <field name="glGlobalAlphaFactorusSUN" writable="1">
+        <type name="GdkGLProc_glGlobalAlphaFactorusSUN"
+              c:type="GdkGLProc_glGlobalAlphaFactorusSUN"/>
+      </field>
+      <field name="glGlobalAlphaFactoruiSUN" writable="1">
+        <type name="GdkGLProc_glGlobalAlphaFactoruiSUN"
+              c:type="GdkGLProc_glGlobalAlphaFactoruiSUN"/>
+      </field>
+    </record>
+    <record name="GL_GL_SUN_mesh_array" c:type="GdkGL_GL_SUN_mesh_array">
+      <field name="glDrawMeshArraysSUN" writable="1">
+        <type name="GdkGLProc_glDrawMeshArraysSUN"
+              c:type="GdkGLProc_glDrawMeshArraysSUN"/>
+      </field>
+    </record>
+    <record name="GL_GL_SUN_multi_draw_arrays"
+            c:type="GdkGL_GL_SUN_multi_draw_arrays">
+      <field name="glMultiDrawArraysSUN" writable="1">
+        <type name="GdkGLProc_glMultiDrawArraysSUN"
+              c:type="GdkGLProc_glMultiDrawArraysSUN"/>
+      </field>
+      <field name="glMultiDrawElementsSUN" writable="1">
+        <type name="GdkGLProc_glMultiDrawElementsSUN"
+              c:type="GdkGLProc_glMultiDrawElementsSUN"/>
+      </field>
+    </record>
+    <record name="GL_GL_SUN_triangle_list" c:type="GdkGL_GL_SUN_triangle_list">
+      <field name="glReplacementCodeuiSUN" writable="1">
+        <type name="GdkGLProc_glReplacementCodeuiSUN"
+              c:type="GdkGLProc_glReplacementCodeuiSUN"/>
+      </field>
+      <field name="glReplacementCodeusSUN" writable="1">
+        <type name="GdkGLProc_glReplacementCodeusSUN"
+              c:type="GdkGLProc_glReplacementCodeusSUN"/>
+      </field>
+      <field name="glReplacementCodeubSUN" writable="1">
+        <type name="GdkGLProc_glReplacementCodeubSUN"
+              c:type="GdkGLProc_glReplacementCodeubSUN"/>
+      </field>
+      <field name="glReplacementCodeuivSUN" writable="1">
+        <type name="GdkGLProc_glReplacementCodeuivSUN"
+              c:type="GdkGLProc_glReplacementCodeuivSUN"/>
+      </field>
+      <field name="glReplacementCodeusvSUN" writable="1">
+        <type name="GdkGLProc_glReplacementCodeusvSUN"
+              c:type="GdkGLProc_glReplacementCodeusvSUN"/>
+      </field>
+      <field name="glReplacementCodeubvSUN" writable="1">
+        <type name="GdkGLProc_glReplacementCodeubvSUN"
+              c:type="GdkGLProc_glReplacementCodeubvSUN"/>
+      </field>
+      <field name="glReplacementCodePointerSUN" writable="1">
+        <type name="GdkGLProc_glReplacementCodePointerSUN"
+              c:type="GdkGLProc_glReplacementCodePointerSUN"/>
+      </field>
+    </record>
+    <record name="GL_GL_SUN_vertex" c:type="GdkGL_GL_SUN_vertex">
+      <field name="glColor4ubVertex2fSUN" writable="1">
+        <type name="GdkGLProc_glColor4ubVertex2fSUN"
+              c:type="GdkGLProc_glColor4ubVertex2fSUN"/>
+      </field>
+      <field name="glColor4ubVertex2fvSUN" writable="1">
+        <type name="GdkGLProc_glColor4ubVertex2fvSUN"
+              c:type="GdkGLProc_glColor4ubVertex2fvSUN"/>
+      </field>
+      <field name="glColor4ubVertex3fSUN" writable="1">
+        <type name="GdkGLProc_glColor4ubVertex3fSUN"
+              c:type="GdkGLProc_glColor4ubVertex3fSUN"/>
+      </field>
+      <field name="glColor4ubVertex3fvSUN" writable="1">
+        <type name="GdkGLProc_glColor4ubVertex3fvSUN"
+              c:type="GdkGLProc_glColor4ubVertex3fvSUN"/>
+      </field>
+      <field name="glColor3fVertex3fSUN" writable="1">
+        <type name="GdkGLProc_glColor3fVertex3fSUN"
+              c:type="GdkGLProc_glColor3fVertex3fSUN"/>
+      </field>
+      <field name="glColor3fVertex3fvSUN" writable="1">
+        <type name="GdkGLProc_glColor3fVertex3fvSUN"
+              c:type="GdkGLProc_glColor3fVertex3fvSUN"/>
+      </field>
+      <field name="glNormal3fVertex3fSUN" writable="1">
+        <type name="GdkGLProc_glNormal3fVertex3fSUN"
+              c:type="GdkGLProc_glNormal3fVertex3fSUN"/>
+      </field>
+      <field name="glNormal3fVertex3fvSUN" writable="1">
+        <type name="GdkGLProc_glNormal3fVertex3fvSUN"
+              c:type="GdkGLProc_glNormal3fVertex3fvSUN"/>
+      </field>
+      <field name="glColor4fNormal3fVertex3fSUN" writable="1">
+        <type name="GdkGLProc_glColor4fNormal3fVertex3fSUN"
+              c:type="GdkGLProc_glColor4fNormal3fVertex3fSUN"/>
+      </field>
+      <field name="glColor4fNormal3fVertex3fvSUN" writable="1">
+        <type name="GdkGLProc_glColor4fNormal3fVertex3fvSUN"
+              c:type="GdkGLProc_glColor4fNormal3fVertex3fvSUN"/>
+      </field>
+      <field name="glTexCoord2fVertex3fSUN" writable="1">
+        <type name="GdkGLProc_glTexCoord2fVertex3fSUN"
+              c:type="GdkGLProc_glTexCoord2fVertex3fSUN"/>
+      </field>
+      <field name="glTexCoord2fVertex3fvSUN" writable="1">
+        <type name="GdkGLProc_glTexCoord2fVertex3fvSUN"
+              c:type="GdkGLProc_glTexCoord2fVertex3fvSUN"/>
+      </field>
+      <field name="glTexCoord4fVertex4fSUN" writable="1">
+        <type name="GdkGLProc_glTexCoord4fVertex4fSUN"
+              c:type="GdkGLProc_glTexCoord4fVertex4fSUN"/>
+      </field>
+      <field name="glTexCoord4fVertex4fvSUN" writable="1">
+        <type name="GdkGLProc_glTexCoord4fVertex4fvSUN"
+              c:type="GdkGLProc_glTexCoord4fVertex4fvSUN"/>
+      </field>
+      <field name="glTexCoord2fColor4ubVertex3fSUN" writable="1">
+        <type name="GdkGLProc_glTexCoord2fColor4ubVertex3fSUN"
+              c:type="GdkGLProc_glTexCoord2fColor4ubVertex3fSUN"/>
+      </field>
+      <field name="glTexCoord2fColor4ubVertex3fvSUN" writable="1">
+        <type name="GdkGLProc_glTexCoord2fColor4ubVertex3fvSUN"
+              c:type="GdkGLProc_glTexCoord2fColor4ubVertex3fvSUN"/>
+      </field>
+      <field name="glTexCoord2fColor3fVertex3fSUN" writable="1">
+        <type name="GdkGLProc_glTexCoord2fColor3fVertex3fSUN"
+              c:type="GdkGLProc_glTexCoord2fColor3fVertex3fSUN"/>
+      </field>
+      <field name="glTexCoord2fColor3fVertex3fvSUN" writable="1">
+        <type name="GdkGLProc_glTexCoord2fColor3fVertex3fvSUN"
+              c:type="GdkGLProc_glTexCoord2fColor3fVertex3fvSUN"/>
+      </field>
+      <field name="glTexCoord2fNormal3fVertex3fSUN" writable="1">
+        <type name="GdkGLProc_glTexCoord2fNormal3fVertex3fSUN"
+              c:type="GdkGLProc_glTexCoord2fNormal3fVertex3fSUN"/>
+      </field>
+      <field name="glTexCoord2fNormal3fVertex3fvSUN" writable="1">
+        <type name="GdkGLProc_glTexCoord2fNormal3fVertex3fvSUN"
+              c:type="GdkGLProc_glTexCoord2fNormal3fVertex3fvSUN"/>
+      </field>
+      <field name="glTexCoord2fColor4fNormal3fVertex3fSUN" writable="1">
+        <type name="GdkGLProc_glTexCoord2fColor4fNormal3fVertex3fSUN"
+              c:type="GdkGLProc_glTexCoord2fColor4fNormal3fVertex3fSUN"/>
+      </field>
+      <field name="glTexCoord2fColor4fNormal3fVertex3fvSUN" writable="1">
+        <type name="GdkGLProc_glTexCoord2fColor4fNormal3fVertex3fvSUN"
+              c:type="GdkGLProc_glTexCoord2fColor4fNormal3fVertex3fvSUN"/>
+      </field>
+      <field name="glTexCoord4fColor4fNormal3fVertex4fSUN" writable="1">
+        <type name="GdkGLProc_glTexCoord4fColor4fNormal3fVertex4fSUN"
+              c:type="GdkGLProc_glTexCoord4fColor4fNormal3fVertex4fSUN"/>
+      </field>
+      <field name="glTexCoord4fColor4fNormal3fVertex4fvSUN" writable="1">
+        <type name="GdkGLProc_glTexCoord4fColor4fNormal3fVertex4fvSUN"
+              c:type="GdkGLProc_glTexCoord4fColor4fNormal3fVertex4fvSUN"/>
+      </field>
+      <field name="glReplacementCodeuiVertex3fSUN" writable="1">
+        <type name="GdkGLProc_glReplacementCodeuiVertex3fSUN"
+              c:type="GdkGLProc_glReplacementCodeuiVertex3fSUN"/>
+      </field>
+      <field name="glReplacementCodeuiVertex3fvSUN" writable="1">
+        <type name="GdkGLProc_glReplacementCodeuiVertex3fvSUN"
+              c:type="GdkGLProc_glReplacementCodeuiVertex3fvSUN"/>
+      </field>
+      <field name="glReplacementCodeuiColor4ubVertex3fSUN" writable="1">
+        <type name="GdkGLProc_glReplacementCodeuiColor4ubVertex3fSUN"
+              c:type="GdkGLProc_glReplacementCodeuiColor4ubVertex3fSUN"/>
+      </field>
+      <field name="glReplacementCodeuiColor4ubVertex3fvSUN" writable="1">
+        <type name="GdkGLProc_glReplacementCodeuiColor4ubVertex3fvSUN"
+              c:type="GdkGLProc_glReplacementCodeuiColor4ubVertex3fvSUN"/>
+      </field>
+      <field name="glReplacementCodeuiColor3fVertex3fSUN" writable="1">
+        <type name="GdkGLProc_glReplacementCodeuiColor3fVertex3fSUN"
+              c:type="GdkGLProc_glReplacementCodeuiColor3fVertex3fSUN"/>
+      </field>
+      <field name="glReplacementCodeuiColor3fVertex3fvSUN" writable="1">
+        <type name="GdkGLProc_glReplacementCodeuiColor3fVertex3fvSUN"
+              c:type="GdkGLProc_glReplacementCodeuiColor3fVertex3fvSUN"/>
+      </field>
+      <field name="glReplacementCodeuiNormal3fVertex3fSUN" writable="1">
+        <type name="GdkGLProc_glReplacementCodeuiNormal3fVertex3fSUN"
+              c:type="GdkGLProc_glReplacementCodeuiNormal3fVertex3fSUN"/>
+      </field>
+      <field name="glReplacementCodeuiNormal3fVertex3fvSUN" writable="1">
+        <type name="GdkGLProc_glReplacementCodeuiNormal3fVertex3fvSUN"
+              c:type="GdkGLProc_glReplacementCodeuiNormal3fVertex3fvSUN"/>
+      </field>
+      <field name="glReplacementCodeuiColor4fNormal3fVertex3fSUN" writable="1">
+        <type name="GdkGLProc_glReplacementCodeuiColor4fNormal3fVertex3fSUN"
+              c:type="GdkGLProc_glReplacementCodeuiColor4fNormal3fVertex3fSUN"/>
+      </field>
+      <field name="glReplacementCodeuiColor4fNormal3fVertex3fvSUN"
+             writable="1">
+        <type name="GdkGLProc_glReplacementCodeuiColor4fNormal3fVertex3fvSUN"
+              c:type="GdkGLProc_glReplacementCodeuiColor4fNormal3fVertex3fvSUN"/>
+      </field>
+      <field name="glReplacementCodeuiTexCoord2fVertex3fSUN" writable="1">
+        <type name="GdkGLProc_glReplacementCodeuiTexCoord2fVertex3fSUN"
+              c:type="GdkGLProc_glReplacementCodeuiTexCoord2fVertex3fSUN"/>
+      </field>
+      <field name="glReplacementCodeuiTexCoord2fVertex3fvSUN" writable="1">
+        <type name="GdkGLProc_glReplacementCodeuiTexCoord2fVertex3fvSUN"
+              c:type="GdkGLProc_glReplacementCodeuiTexCoord2fVertex3fvSUN"/>
+      </field>
+      <field name="glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"
+             writable="1">
+        <type name="GdkGLProc_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"
+              c:type="GdkGLProc_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"/>
+      </field>
+      <field name="glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"
+             writable="1">
+        <type name="GdkGLProc_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"
+              c:type="GdkGLProc_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"/>
+      </field>
+      <field name="glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"
+             writable="1">
+        <type name="GdkGLProc_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"
+              c:type="GdkGLProc_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"/>
+      </field>
+      <field name="glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"
+             writable="1">
+        <type name="GdkGLProc_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"
+              c:type="GdkGLProc_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"/>
+      </field>
+    </record>
+    <record name="GL_GL_VERSION_1_2" c:type="GdkGL_GL_VERSION_1_2">
+      <field name="glBlendColor" writable="1">
+        <type name="GdkGLProc_glBlendColor" c:type="GdkGLProc_glBlendColor"/>
+      </field>
+      <field name="glBlendEquation" writable="1">
+        <type name="GdkGLProc_glBlendEquation"
+              c:type="GdkGLProc_glBlendEquation"/>
+      </field>
+      <field name="glDrawRangeElements" writable="1">
+        <type name="GdkGLProc_glDrawRangeElements"
+              c:type="GdkGLProc_glDrawRangeElements"/>
+      </field>
+      <field name="glColorTable" writable="1">
+        <type name="GdkGLProc_glColorTable" c:type="GdkGLProc_glColorTable"/>
+      </field>
+      <field name="glColorTableParameterfv" writable="1">
+        <type name="GdkGLProc_glColorTableParameterfv"
+              c:type="GdkGLProc_glColorTableParameterfv"/>
+      </field>
+      <field name="glColorTableParameteriv" writable="1">
+        <type name="GdkGLProc_glColorTableParameteriv"
+              c:type="GdkGLProc_glColorTableParameteriv"/>
+      </field>
+      <field name="glCopyColorTable" writable="1">
+        <type name="GdkGLProc_glCopyColorTable"
+              c:type="GdkGLProc_glCopyColorTable"/>
+      </field>
+      <field name="glGetColorTable" writable="1">
+        <type name="GdkGLProc_glGetColorTable"
+              c:type="GdkGLProc_glGetColorTable"/>
+      </field>
+      <field name="glGetColorTableParameterfv" writable="1">
+        <type name="GdkGLProc_glGetColorTableParameterfv"
+              c:type="GdkGLProc_glGetColorTableParameterfv"/>
+      </field>
+      <field name="glGetColorTableParameteriv" writable="1">
+        <type name="GdkGLProc_glGetColorTableParameteriv"
+              c:type="GdkGLProc_glGetColorTableParameteriv"/>
+      </field>
+      <field name="glColorSubTable" writable="1">
+        <type name="GdkGLProc_glColorSubTable"
+              c:type="GdkGLProc_glColorSubTable"/>
+      </field>
+      <field name="glCopyColorSubTable" writable="1">
+        <type name="GdkGLProc_glCopyColorSubTable"
+              c:type="GdkGLProc_glCopyColorSubTable"/>
+      </field>
+      <field name="glConvolutionFilter1D" writable="1">
+        <type name="GdkGLProc_glConvolutionFilter1D"
+              c:type="GdkGLProc_glConvolutionFilter1D"/>
+      </field>
+      <field name="glConvolutionFilter2D" writable="1">
+        <type name="GdkGLProc_glConvolutionFilter2D"
+              c:type="GdkGLProc_glConvolutionFilter2D"/>
+      </field>
+      <field name="glConvolutionParameterf" writable="1">
+        <type name="GdkGLProc_glConvolutionParameterf"
+              c:type="GdkGLProc_glConvolutionParameterf"/>
+      </field>
+      <field name="glConvolutionParameterfv" writable="1">
+        <type name="GdkGLProc_glConvolutionParameterfv"
+              c:type="GdkGLProc_glConvolutionParameterfv"/>
+      </field>
+      <field name="glConvolutionParameteri" writable="1">
+        <type name="GdkGLProc_glConvolutionParameteri"
+              c:type="GdkGLProc_glConvolutionParameteri"/>
+      </field>
+      <field name="glConvolutionParameteriv" writable="1">
+        <type name="GdkGLProc_glConvolutionParameteriv"
+              c:type="GdkGLProc_glConvolutionParameteriv"/>
+      </field>
+      <field name="glCopyConvolutionFilter1D" writable="1">
+        <type name="GdkGLProc_glCopyConvolutionFilter1D"
+              c:type="GdkGLProc_glCopyConvolutionFilter1D"/>
+      </field>
+      <field name="glCopyConvolutionFilter2D" writable="1">
+        <type name="GdkGLProc_glCopyConvolutionFilter2D"
+              c:type="GdkGLProc_glCopyConvolutionFilter2D"/>
+      </field>
+      <field name="glGetConvolutionFilter" writable="1">
+        <type name="GdkGLProc_glGetConvolutionFilter"
+              c:type="GdkGLProc_glGetConvolutionFilter"/>
+      </field>
+      <field name="glGetConvolutionParameterfv" writable="1">
+        <type name="GdkGLProc_glGetConvolutionParameterfv"
+              c:type="GdkGLProc_glGetConvolutionParameterfv"/>
+      </field>
+      <field name="glGetConvolutionParameteriv" writable="1">
+        <type name="GdkGLProc_glGetConvolutionParameteriv"
+              c:type="GdkGLProc_glGetConvolutionParameteriv"/>
+      </field>
+      <field name="glGetSeparableFilter" writable="1">
+        <type name="GdkGLProc_glGetSeparableFilter"
+              c:type="GdkGLProc_glGetSeparableFilter"/>
+      </field>
+      <field name="glSeparableFilter2D" writable="1">
+        <type name="GdkGLProc_glSeparableFilter2D"
+              c:type="GdkGLProc_glSeparableFilter2D"/>
+      </field>
+      <field name="glGetHistogram" writable="1">
+        <type name="GdkGLProc_glGetHistogram"
+              c:type="GdkGLProc_glGetHistogram"/>
+      </field>
+      <field name="glGetHistogramParameterfv" writable="1">
+        <type name="GdkGLProc_glGetHistogramParameterfv"
+              c:type="GdkGLProc_glGetHistogramParameterfv"/>
+      </field>
+      <field name="glGetHistogramParameteriv" writable="1">
+        <type name="GdkGLProc_glGetHistogramParameteriv"
+              c:type="GdkGLProc_glGetHistogramParameteriv"/>
+      </field>
+      <field name="glGetMinmax" writable="1">
+        <type name="GdkGLProc_glGetMinmax" c:type="GdkGLProc_glGetMinmax"/>
+      </field>
+      <field name="glGetMinmaxParameterfv" writable="1">
+        <type name="GdkGLProc_glGetMinmaxParameterfv"
+              c:type="GdkGLProc_glGetMinmaxParameterfv"/>
+      </field>
+      <field name="glGetMinmaxParameteriv" writable="1">
+        <type name="GdkGLProc_glGetMinmaxParameteriv"
+              c:type="GdkGLProc_glGetMinmaxParameteriv"/>
+      </field>
+      <field name="glHistogram" writable="1">
+        <type name="GdkGLProc_glHistogram" c:type="GdkGLProc_glHistogram"/>
+      </field>
+      <field name="glMinmax" writable="1">
+        <type name="GdkGLProc_glMinmax" c:type="GdkGLProc_glMinmax"/>
+      </field>
+      <field name="glResetHistogram" writable="1">
+        <type name="GdkGLProc_glResetHistogram"
+              c:type="GdkGLProc_glResetHistogram"/>
+      </field>
+      <field name="glResetMinmax" writable="1">
+        <type name="GdkGLProc_glResetMinmax" c:type="GdkGLProc_glResetMinmax"/>
+      </field>
+      <field name="glTexImage3D" writable="1">
+        <type name="GdkGLProc_glTexImage3D" c:type="GdkGLProc_glTexImage3D"/>
+      </field>
+      <field name="glTexSubImage3D" writable="1">
+        <type name="GdkGLProc_glTexSubImage3D"
+              c:type="GdkGLProc_glTexSubImage3D"/>
+      </field>
+      <field name="glCopyTexSubImage3D" writable="1">
+        <type name="GdkGLProc_glCopyTexSubImage3D"
+              c:type="GdkGLProc_glCopyTexSubImage3D"/>
+      </field>
+    </record>
+    <record name="GL_GL_VERSION_1_3" c:type="GdkGL_GL_VERSION_1_3">
+      <field name="glActiveTexture" writable="1">
+        <type name="GdkGLProc_glActiveTexture"
+              c:type="GdkGLProc_glActiveTexture"/>
+      </field>
+      <field name="glClientActiveTexture" writable="1">
+        <type name="GdkGLProc_glClientActiveTexture"
+              c:type="GdkGLProc_glClientActiveTexture"/>
+      </field>
+      <field name="glMultiTexCoord1d" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1d"
+              c:type="GdkGLProc_glMultiTexCoord1d"/>
+      </field>
+      <field name="glMultiTexCoord1dv" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1dv"
+              c:type="GdkGLProc_glMultiTexCoord1dv"/>
+      </field>
+      <field name="glMultiTexCoord1f" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1f"
+              c:type="GdkGLProc_glMultiTexCoord1f"/>
+      </field>
+      <field name="glMultiTexCoord1fv" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1fv"
+              c:type="GdkGLProc_glMultiTexCoord1fv"/>
+      </field>
+      <field name="glMultiTexCoord1i" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1i"
+              c:type="GdkGLProc_glMultiTexCoord1i"/>
+      </field>
+      <field name="glMultiTexCoord1iv" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1iv"
+              c:type="GdkGLProc_glMultiTexCoord1iv"/>
+      </field>
+      <field name="glMultiTexCoord1s" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1s"
+              c:type="GdkGLProc_glMultiTexCoord1s"/>
+      </field>
+      <field name="glMultiTexCoord1sv" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord1sv"
+              c:type="GdkGLProc_glMultiTexCoord1sv"/>
+      </field>
+      <field name="glMultiTexCoord2d" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2d"
+              c:type="GdkGLProc_glMultiTexCoord2d"/>
+      </field>
+      <field name="glMultiTexCoord2dv" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2dv"
+              c:type="GdkGLProc_glMultiTexCoord2dv"/>
+      </field>
+      <field name="glMultiTexCoord2f" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2f"
+              c:type="GdkGLProc_glMultiTexCoord2f"/>
+      </field>
+      <field name="glMultiTexCoord2fv" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2fv"
+              c:type="GdkGLProc_glMultiTexCoord2fv"/>
+      </field>
+      <field name="glMultiTexCoord2i" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2i"
+              c:type="GdkGLProc_glMultiTexCoord2i"/>
+      </field>
+      <field name="glMultiTexCoord2iv" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2iv"
+              c:type="GdkGLProc_glMultiTexCoord2iv"/>
+      </field>
+      <field name="glMultiTexCoord2s" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2s"
+              c:type="GdkGLProc_glMultiTexCoord2s"/>
+      </field>
+      <field name="glMultiTexCoord2sv" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord2sv"
+              c:type="GdkGLProc_glMultiTexCoord2sv"/>
+      </field>
+      <field name="glMultiTexCoord3d" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3d"
+              c:type="GdkGLProc_glMultiTexCoord3d"/>
+      </field>
+      <field name="glMultiTexCoord3dv" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3dv"
+              c:type="GdkGLProc_glMultiTexCoord3dv"/>
+      </field>
+      <field name="glMultiTexCoord3f" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3f"
+              c:type="GdkGLProc_glMultiTexCoord3f"/>
+      </field>
+      <field name="glMultiTexCoord3fv" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3fv"
+              c:type="GdkGLProc_glMultiTexCoord3fv"/>
+      </field>
+      <field name="glMultiTexCoord3i" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3i"
+              c:type="GdkGLProc_glMultiTexCoord3i"/>
+      </field>
+      <field name="glMultiTexCoord3iv" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3iv"
+              c:type="GdkGLProc_glMultiTexCoord3iv"/>
+      </field>
+      <field name="glMultiTexCoord3s" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3s"
+              c:type="GdkGLProc_glMultiTexCoord3s"/>
+      </field>
+      <field name="glMultiTexCoord3sv" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord3sv"
+              c:type="GdkGLProc_glMultiTexCoord3sv"/>
+      </field>
+      <field name="glMultiTexCoord4d" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4d"
+              c:type="GdkGLProc_glMultiTexCoord4d"/>
+      </field>
+      <field name="glMultiTexCoord4dv" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4dv"
+              c:type="GdkGLProc_glMultiTexCoord4dv"/>
+      </field>
+      <field name="glMultiTexCoord4f" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4f"
+              c:type="GdkGLProc_glMultiTexCoord4f"/>
+      </field>
+      <field name="glMultiTexCoord4fv" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4fv"
+              c:type="GdkGLProc_glMultiTexCoord4fv"/>
+      </field>
+      <field name="glMultiTexCoord4i" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4i"
+              c:type="GdkGLProc_glMultiTexCoord4i"/>
+      </field>
+      <field name="glMultiTexCoord4iv" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4iv"
+              c:type="GdkGLProc_glMultiTexCoord4iv"/>
+      </field>
+      <field name="glMultiTexCoord4s" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4s"
+              c:type="GdkGLProc_glMultiTexCoord4s"/>
+      </field>
+      <field name="glMultiTexCoord4sv" writable="1">
+        <type name="GdkGLProc_glMultiTexCoord4sv"
+              c:type="GdkGLProc_glMultiTexCoord4sv"/>
+      </field>
+      <field name="glLoadTransposeMatrixf" writable="1">
+        <type name="GdkGLProc_glLoadTransposeMatrixf"
+              c:type="GdkGLProc_glLoadTransposeMatrixf"/>
+      </field>
+      <field name="glLoadTransposeMatrixd" writable="1">
+        <type name="GdkGLProc_glLoadTransposeMatrixd"
+              c:type="GdkGLProc_glLoadTransposeMatrixd"/>
+      </field>
+      <field name="glMultTransposeMatrixf" writable="1">
+        <type name="GdkGLProc_glMultTransposeMatrixf"
+              c:type="GdkGLProc_glMultTransposeMatrixf"/>
+      </field>
+      <field name="glMultTransposeMatrixd" writable="1">
+        <type name="GdkGLProc_glMultTransposeMatrixd"
+              c:type="GdkGLProc_glMultTransposeMatrixd"/>
+      </field>
+      <field name="glSampleCoverage" writable="1">
+        <type name="GdkGLProc_glSampleCoverage"
+              c:type="GdkGLProc_glSampleCoverage"/>
+      </field>
+      <field name="glCompressedTexImage3D" writable="1">
+        <type name="GdkGLProc_glCompressedTexImage3D"
+              c:type="GdkGLProc_glCompressedTexImage3D"/>
+      </field>
+      <field name="glCompressedTexImage2D" writable="1">
+        <type name="GdkGLProc_glCompressedTexImage2D"
+              c:type="GdkGLProc_glCompressedTexImage2D"/>
+      </field>
+      <field name="glCompressedTexImage1D" writable="1">
+        <type name="GdkGLProc_glCompressedTexImage1D"
+              c:type="GdkGLProc_glCompressedTexImage1D"/>
+      </field>
+      <field name="glCompressedTexSubImage3D" writable="1">
+        <type name="GdkGLProc_glCompressedTexSubImage3D"
+              c:type="GdkGLProc_glCompressedTexSubImage3D"/>
+      </field>
+      <field name="glCompressedTexSubImage2D" writable="1">
+        <type name="GdkGLProc_glCompressedTexSubImage2D"
+              c:type="GdkGLProc_glCompressedTexSubImage2D"/>
+      </field>
+      <field name="glCompressedTexSubImage1D" writable="1">
+        <type name="GdkGLProc_glCompressedTexSubImage1D"
+              c:type="GdkGLProc_glCompressedTexSubImage1D"/>
+      </field>
+      <field name="glGetCompressedTexImage" writable="1">
+        <type name="GdkGLProc_glGetCompressedTexImage"
+              c:type="GdkGLProc_glGetCompressedTexImage"/>
+      </field>
+    </record>
+    <record name="GL_GL_VERSION_1_4" c:type="GdkGL_GL_VERSION_1_4">
+      <field name="glBlendFuncSeparate" writable="1">
+        <type name="GdkGLProc_glBlendFuncSeparate"
+              c:type="GdkGLProc_glBlendFuncSeparate"/>
+      </field>
+      <field name="glFogCoordf" writable="1">
+        <type name="GdkGLProc_glFogCoordf" c:type="GdkGLProc_glFogCoordf"/>
+      </field>
+      <field name="glFogCoordfv" writable="1">
+        <type name="GdkGLProc_glFogCoordfv" c:type="GdkGLProc_glFogCoordfv"/>
+      </field>
+      <field name="glFogCoordd" writable="1">
+        <type name="GdkGLProc_glFogCoordd" c:type="GdkGLProc_glFogCoordd"/>
+      </field>
+      <field name="glFogCoorddv" writable="1">
+        <type name="GdkGLProc_glFogCoorddv" c:type="GdkGLProc_glFogCoorddv"/>
+      </field>
+      <field name="glFogCoordPointer" writable="1">
+        <type name="GdkGLProc_glFogCoordPointer"
+              c:type="GdkGLProc_glFogCoordPointer"/>
+      </field>
+      <field name="glMultiDrawArrays" writable="1">
+        <type name="GdkGLProc_glMultiDrawArrays"
+              c:type="GdkGLProc_glMultiDrawArrays"/>
+      </field>
+      <field name="glMultiDrawElements" writable="1">
+        <type name="GdkGLProc_glMultiDrawElements"
+              c:type="GdkGLProc_glMultiDrawElements"/>
+      </field>
+      <field name="glPointParameterf" writable="1">
+        <type name="GdkGLProc_glPointParameterf"
+              c:type="GdkGLProc_glPointParameterf"/>
+      </field>
+      <field name="glPointParameterfv" writable="1">
+        <type name="GdkGLProc_glPointParameterfv"
+              c:type="GdkGLProc_glPointParameterfv"/>
+      </field>
+      <field name="glPointParameteri" writable="1">
+        <type name="GdkGLProc_glPointParameteri"
+              c:type="GdkGLProc_glPointParameteri"/>
+      </field>
+      <field name="glPointParameteriv" writable="1">
+        <type name="GdkGLProc_glPointParameteriv"
+              c:type="GdkGLProc_glPointParameteriv"/>
+      </field>
+      <field name="glSecondaryColor3b" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3b"
+              c:type="GdkGLProc_glSecondaryColor3b"/>
+      </field>
+      <field name="glSecondaryColor3bv" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3bv"
+              c:type="GdkGLProc_glSecondaryColor3bv"/>
+      </field>
+      <field name="glSecondaryColor3d" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3d"
+              c:type="GdkGLProc_glSecondaryColor3d"/>
+      </field>
+      <field name="glSecondaryColor3dv" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3dv"
+              c:type="GdkGLProc_glSecondaryColor3dv"/>
+      </field>
+      <field name="glSecondaryColor3f" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3f"
+              c:type="GdkGLProc_glSecondaryColor3f"/>
+      </field>
+      <field name="glSecondaryColor3fv" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3fv"
+              c:type="GdkGLProc_glSecondaryColor3fv"/>
+      </field>
+      <field name="glSecondaryColor3i" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3i"
+              c:type="GdkGLProc_glSecondaryColor3i"/>
+      </field>
+      <field name="glSecondaryColor3iv" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3iv"
+              c:type="GdkGLProc_glSecondaryColor3iv"/>
+      </field>
+      <field name="glSecondaryColor3s" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3s"
+              c:type="GdkGLProc_glSecondaryColor3s"/>
+      </field>
+      <field name="glSecondaryColor3sv" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3sv"
+              c:type="GdkGLProc_glSecondaryColor3sv"/>
+      </field>
+      <field name="glSecondaryColor3ub" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3ub"
+              c:type="GdkGLProc_glSecondaryColor3ub"/>
+      </field>
+      <field name="glSecondaryColor3ubv" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3ubv"
+              c:type="GdkGLProc_glSecondaryColor3ubv"/>
+      </field>
+      <field name="glSecondaryColor3ui" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3ui"
+              c:type="GdkGLProc_glSecondaryColor3ui"/>
+      </field>
+      <field name="glSecondaryColor3uiv" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3uiv"
+              c:type="GdkGLProc_glSecondaryColor3uiv"/>
+      </field>
+      <field name="glSecondaryColor3us" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3us"
+              c:type="GdkGLProc_glSecondaryColor3us"/>
+      </field>
+      <field name="glSecondaryColor3usv" writable="1">
+        <type name="GdkGLProc_glSecondaryColor3usv"
+              c:type="GdkGLProc_glSecondaryColor3usv"/>
+      </field>
+      <field name="glSecondaryColorPointer" writable="1">
+        <type name="GdkGLProc_glSecondaryColorPointer"
+              c:type="GdkGLProc_glSecondaryColorPointer"/>
+      </field>
+      <field name="glWindowPos2d" writable="1">
+        <type name="GdkGLProc_glWindowPos2d" c:type="GdkGLProc_glWindowPos2d"/>
+      </field>
+      <field name="glWindowPos2dv" writable="1">
+        <type name="GdkGLProc_glWindowPos2dv"
+              c:type="GdkGLProc_glWindowPos2dv"/>
+      </field>
+      <field name="glWindowPos2f" writable="1">
+        <type name="GdkGLProc_glWindowPos2f" c:type="GdkGLProc_glWindowPos2f"/>
+      </field>
+      <field name="glWindowPos2fv" writable="1">
+        <type name="GdkGLProc_glWindowPos2fv"
+              c:type="GdkGLProc_glWindowPos2fv"/>
+      </field>
+      <field name="glWindowPos2i" writable="1">
+        <type name="GdkGLProc_glWindowPos2i" c:type="GdkGLProc_glWindowPos2i"/>
+      </field>
+      <field name="glWindowPos2iv" writable="1">
+        <type name="GdkGLProc_glWindowPos2iv"
+              c:type="GdkGLProc_glWindowPos2iv"/>
+      </field>
+      <field name="glWindowPos2s" writable="1">
+        <type name="GdkGLProc_glWindowPos2s" c:type="GdkGLProc_glWindowPos2s"/>
+      </field>
+      <field name="glWindowPos2sv" writable="1">
+        <type name="GdkGLProc_glWindowPos2sv"
+              c:type="GdkGLProc_glWindowPos2sv"/>
+      </field>
+      <field name="glWindowPos3d" writable="1">
+        <type name="GdkGLProc_glWindowPos3d" c:type="GdkGLProc_glWindowPos3d"/>
+      </field>
+      <field name="glWindowPos3dv" writable="1">
+        <type name="GdkGLProc_glWindowPos3dv"
+              c:type="GdkGLProc_glWindowPos3dv"/>
+      </field>
+      <field name="glWindowPos3f" writable="1">
+        <type name="GdkGLProc_glWindowPos3f" c:type="GdkGLProc_glWindowPos3f"/>
+      </field>
+      <field name="glWindowPos3fv" writable="1">
+        <type name="GdkGLProc_glWindowPos3fv"
+              c:type="GdkGLProc_glWindowPos3fv"/>
+      </field>
+      <field name="glWindowPos3i" writable="1">
+        <type name="GdkGLProc_glWindowPos3i" c:type="GdkGLProc_glWindowPos3i"/>
+      </field>
+      <field name="glWindowPos3iv" writable="1">
+        <type name="GdkGLProc_glWindowPos3iv"
+              c:type="GdkGLProc_glWindowPos3iv"/>
+      </field>
+      <field name="glWindowPos3s" writable="1">
+        <type name="GdkGLProc_glWindowPos3s" c:type="GdkGLProc_glWindowPos3s"/>
+      </field>
+      <field name="glWindowPos3sv" writable="1">
+        <type name="GdkGLProc_glWindowPos3sv"
+              c:type="GdkGLProc_glWindowPos3sv"/>
+      </field>
+    </record>
+    <record name="GL_GL_WIN_swap_hint" c:type="GdkGL_GL_WIN_swap_hint">
+      <field name="glAddSwapHintRectWIN" writable="1">
+        <type name="GdkGLProc_glAddSwapHintRectWIN"
+              c:type="GdkGLProc_glAddSwapHintRectWIN"/>
+      </field>
+    </record>
+    <constant name="GL_NONE" value="32768">
+      <type name="int"/>
+    </constant>
+    <constant name="GL_SGIS_point_parameters" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="GL_SUCCESS" value="0">
+      <type name="int"/>
+    </constant>
+    <callback name="GdkGLProc_glActiveStencilFaceEXT"
+              c:type="GdkGLProc_glActiveStencilFaceEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glActiveStencilFaceNV"
+              c:type="GdkGLProc_glActiveStencilFaceNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glActiveTexture"
+              c:type="GdkGLProc_glActiveTexture">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="texture" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glActiveTextureARB"
+              c:type="GdkGLProc_glActiveTextureARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="texture" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glAddSwapHintRectWIN"
+              c:type="GdkGLProc_glAddSwapHintRectWIN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glAlphaFragmentOp1ATI"
+              c:type="GdkGLProc_glAlphaFragmentOp1ATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="op" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="dst" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="dstMod" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1Rep" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1Mod" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glAlphaFragmentOp2ATI"
+              c:type="GdkGLProc_glAlphaFragmentOp2ATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="op" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="dst" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="dstMod" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1Rep" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1Mod" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg2" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg2Rep" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg2Mod" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glAlphaFragmentOp3ATI"
+              c:type="GdkGLProc_glAlphaFragmentOp3ATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="op" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="dst" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="dstMod" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1Rep" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1Mod" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg2" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg2Rep" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg2Mod" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg3" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg3Rep" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg3Mod" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glApplyTextureEXT"
+              c:type="GdkGLProc_glApplyTextureEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glAreProgramsResidentNV"
+              c:type="GdkGLProc_glAreProgramsResidentNV">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="programs" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+        <parameter name="residences" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glAreTexturesResidentEXT"
+              c:type="GdkGLProc_glAreTexturesResidentEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="textures" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+        <parameter name="residences" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glArrayElementEXT"
+              c:type="GdkGLProc_glArrayElementEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="i" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glArrayObjectATI"
+              c:type="GdkGLProc_glArrayObjectATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glAsyncMarkerSGIX"
+              c:type="GdkGLProc_glAsyncMarkerSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="marker" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBeginFragmentShaderATI"
+              c:type="GdkGLProc_glBeginFragmentShaderATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="GdkGLProc_glBeginOcclusionQueryNV"
+              c:type="GdkGLProc_glBeginOcclusionQueryNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBeginSceneEXT"
+              c:type="GdkGLProc_glBeginSceneEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="GdkGLProc_glBeginVertexShaderEXT"
+              c:type="GdkGLProc_glBeginVertexShaderEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="GdkGLProc_glBindBufferARB"
+              c:type="GdkGLProc_glBindBufferARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBindFragmentShaderATI"
+              c:type="GdkGLProc_glBindFragmentShaderATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBindLightParameterEXT"
+              c:type="GdkGLProc_glBindLightParameterEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLuint" c:type="GLuint"/>
+      </return-value>
+      <parameters>
+        <parameter name="light" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBindMaterialParameterEXT"
+              c:type="GdkGLProc_glBindMaterialParameterEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLuint" c:type="GLuint"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBindParameterEXT"
+              c:type="GdkGLProc_glBindParameterEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLuint" c:type="GLuint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBindProgramARB"
+              c:type="GdkGLProc_glBindProgramARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="program" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBindProgramNV"
+              c:type="GdkGLProc_glBindProgramNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBindTexGenParameterEXT"
+              c:type="GdkGLProc_glBindTexGenParameterEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLuint" c:type="GLuint"/>
+      </return-value>
+      <parameters>
+        <parameter name="unit" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coord" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBindTextureEXT"
+              c:type="GdkGLProc_glBindTextureEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="texture" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBindTextureUnitParameterEXT"
+              c:type="GdkGLProc_glBindTextureUnitParameterEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLuint" c:type="GLuint"/>
+      </return-value>
+      <parameters>
+        <parameter name="unit" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBindVertexArrayAPPLE"
+              c:type="GdkGLProc_glBindVertexArrayAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBindVertexShaderEXT"
+              c:type="GdkGLProc_glBindVertexShaderEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBinormal3bEXT"
+              c:type="GdkGLProc_glBinormal3bEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="bx" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+        <parameter name="by" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+        <parameter name="bz" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBinormal3bvEXT"
+              c:type="GdkGLProc_glBinormal3bvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBinormal3dEXT"
+              c:type="GdkGLProc_glBinormal3dEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="bx" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="by" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="bz" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBinormal3dvEXT"
+              c:type="GdkGLProc_glBinormal3dvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBinormal3fEXT"
+              c:type="GdkGLProc_glBinormal3fEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="bx" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="by" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="bz" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBinormal3fvEXT"
+              c:type="GdkGLProc_glBinormal3fvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBinormal3iEXT"
+              c:type="GdkGLProc_glBinormal3iEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="bx" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="by" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="bz" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBinormal3ivEXT"
+              c:type="GdkGLProc_glBinormal3ivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBinormal3sEXT"
+              c:type="GdkGLProc_glBinormal3sEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="bx" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="by" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="bz" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBinormal3svEXT"
+              c:type="GdkGLProc_glBinormal3svEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBinormalPointerEXT"
+              c:type="GdkGLProc_glBinormalPointerEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBlendColor" c:type="GdkGLProc_glBlendColor">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLclampf" c:type="GLclampf"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLclampf" c:type="GLclampf"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLclampf" c:type="GLclampf"/>
+        </parameter>
+        <parameter name="alpha" transfer-ownership="none">
+          <type name="GLclampf" c:type="GLclampf"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBlendColorEXT"
+              c:type="GdkGLProc_glBlendColorEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLclampf" c:type="GLclampf"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLclampf" c:type="GLclampf"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLclampf" c:type="GLclampf"/>
+        </parameter>
+        <parameter name="alpha" transfer-ownership="none">
+          <type name="GLclampf" c:type="GLclampf"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBlendEquation"
+              c:type="GdkGLProc_glBlendEquation">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBlendEquationEXT"
+              c:type="GdkGLProc_glBlendEquationEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBlendEquationSeparateATI"
+              c:type="GdkGLProc_glBlendEquationSeparateATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="equationRGB" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="equationAlpha" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBlendFuncSeparate"
+              c:type="GdkGLProc_glBlendFuncSeparate">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="sfactorRGB" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="dfactorRGB" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="sfactorAlpha" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="dfactorAlpha" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBlendFuncSeparateEXT"
+              c:type="GdkGLProc_glBlendFuncSeparateEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="sfactorRGB" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="dfactorRGB" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="sfactorAlpha" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="dfactorAlpha" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBlendFuncSeparateINGR"
+              c:type="GdkGLProc_glBlendFuncSeparateINGR">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="sfactorRGB" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="dfactorRGB" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="sfactorAlpha" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="dfactorAlpha" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBufferDataARB"
+              c:type="GdkGLProc_glBufferDataARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLsizeiptrARB" c:type="GLsizeiptrARB"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+        <parameter name="usage" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glBufferRegionEnabled"
+              c:type="GdkGLProc_glBufferRegionEnabled">
+      <return-value transfer-ownership="full">
+        <type name="GLuint" c:type="GLuint"/>
+      </return-value>
+    </callback>
+    <callback name="GdkGLProc_glBufferSubDataARB"
+              c:type="GdkGLProc_glBufferSubDataARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="GLintptrARB" c:type="GLintptrARB"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLsizeiptrARB" c:type="GLsizeiptrARB"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glClientActiveTexture"
+              c:type="GdkGLProc_glClientActiveTexture">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="texture" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glClientActiveTextureARB"
+              c:type="GdkGLProc_glClientActiveTextureARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="texture" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glClientActiveVertexStreamATI"
+              c:type="GdkGLProc_glClientActiveVertexStreamATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColor3fVertex3fSUN"
+              c:type="GdkGLProc_glColor3fVertex3fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="g" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColor3fVertex3fvSUN"
+              c:type="GdkGLProc_glColor3fVertex3fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColor3hNV" c:type="GdkGLProc_glColor3hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColor3hvNV" c:type="GdkGLProc_glColor3hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColor4fNormal3fVertex3fSUN"
+              c:type="GdkGLProc_glColor4fNormal3fVertex3fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="g" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="a" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColor4fNormal3fVertex3fvSUN"
+              c:type="GdkGLProc_glColor4fNormal3fVertex3fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColor4hNV" c:type="GdkGLProc_glColor4hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="alpha" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColor4hvNV" c:type="GdkGLProc_glColor4hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColor4ubVertex2fSUN"
+              c:type="GdkGLProc_glColor4ubVertex2fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="g" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="a" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColor4ubVertex2fvSUN"
+              c:type="GdkGLProc_glColor4ubVertex2fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColor4ubVertex3fSUN"
+              c:type="GdkGLProc_glColor4ubVertex3fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="g" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="a" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColor4ubVertex3fvSUN"
+              c:type="GdkGLProc_glColor4ubVertex3fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColorFragmentOp1ATI"
+              c:type="GdkGLProc_glColorFragmentOp1ATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="op" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="dst" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="dstMask" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="dstMod" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1Rep" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1Mod" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColorFragmentOp2ATI"
+              c:type="GdkGLProc_glColorFragmentOp2ATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="op" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="dst" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="dstMask" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="dstMod" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1Rep" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1Mod" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg2" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg2Rep" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg2Mod" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColorFragmentOp3ATI"
+              c:type="GdkGLProc_glColorFragmentOp3ATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="op" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="dst" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="dstMask" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="dstMod" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1Rep" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1Mod" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg2" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg2Rep" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg2Mod" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg3" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg3Rep" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg3Mod" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColorPointerEXT"
+              c:type="GdkGLProc_glColorPointerEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColorPointerListIBM"
+              c:type="GdkGLProc_glColorPointerListIBM">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+        <parameter name="ptrstride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColorPointervINTEL"
+              c:type="GdkGLProc_glColorPointervINTEL">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColorSubTable"
+              c:type="GdkGLProc_glColorSubTable">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColorSubTableEXT"
+              c:type="GdkGLProc_glColorSubTableEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColorTable" c:type="GdkGLProc_glColorTable">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="table" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColorTableEXT"
+              c:type="GdkGLProc_glColorTableEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="internalFormat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="table" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColorTableParameterfv"
+              c:type="GdkGLProc_glColorTableParameterfv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColorTableParameterfvSGI"
+              c:type="GdkGLProc_glColorTableParameterfvSGI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColorTableParameteriv"
+              c:type="GdkGLProc_glColorTableParameteriv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColorTableParameterivSGI"
+              c:type="GdkGLProc_glColorTableParameterivSGI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glColorTableSGI"
+              c:type="GdkGLProc_glColorTableSGI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="table" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCombinerInputNV"
+              c:type="GdkGLProc_glCombinerInputNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stage" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="portion" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="variable" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="input" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="mapping" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="componentUsage" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCombinerOutputNV"
+              c:type="GdkGLProc_glCombinerOutputNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stage" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="portion" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="abOutput" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="cdOutput" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="sumOutput" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="scale" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="bias" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="abDotProduct" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+        <parameter name="cdDotProduct" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+        <parameter name="muxSum" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCombinerParameterfNV"
+              c:type="GdkGLProc_glCombinerParameterfNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCombinerParameterfvNV"
+              c:type="GdkGLProc_glCombinerParameterfvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCombinerParameteriNV"
+              c:type="GdkGLProc_glCombinerParameteriNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCombinerParameterivNV"
+              c:type="GdkGLProc_glCombinerParameterivNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCombinerStageParameterfvNV"
+              c:type="GdkGLProc_glCombinerStageParameterfvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stage" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCompressedTexImage1D"
+              c:type="GdkGLProc_glCompressedTexImage1D">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="border" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="imageSize" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCompressedTexImage1DARB"
+              c:type="GdkGLProc_glCompressedTexImage1DARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="border" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="imageSize" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCompressedTexImage2D"
+              c:type="GdkGLProc_glCompressedTexImage2D">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="border" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="imageSize" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCompressedTexImage2DARB"
+              c:type="GdkGLProc_glCompressedTexImage2DARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="border" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="imageSize" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCompressedTexImage3D"
+              c:type="GdkGLProc_glCompressedTexImage3D">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="depth" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="border" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="imageSize" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCompressedTexImage3DARB"
+              c:type="GdkGLProc_glCompressedTexImage3DARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="depth" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="border" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="imageSize" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCompressedTexSubImage1D"
+              c:type="GdkGLProc_glCompressedTexSubImage1D">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="xoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="imageSize" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCompressedTexSubImage1DARB"
+              c:type="GdkGLProc_glCompressedTexSubImage1DARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="xoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="imageSize" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCompressedTexSubImage2D"
+              c:type="GdkGLProc_glCompressedTexSubImage2D">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="xoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="yoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="imageSize" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCompressedTexSubImage2DARB"
+              c:type="GdkGLProc_glCompressedTexSubImage2DARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="xoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="yoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="imageSize" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCompressedTexSubImage3D"
+              c:type="GdkGLProc_glCompressedTexSubImage3D">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="xoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="yoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="zoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="depth" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="imageSize" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCompressedTexSubImage3DARB"
+              c:type="GdkGLProc_glCompressedTexSubImage3DARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="xoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="yoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="zoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="depth" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="imageSize" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glConvolutionFilter1D"
+              c:type="GdkGLProc_glConvolutionFilter1D">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="image" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glConvolutionFilter1DEXT"
+              c:type="GdkGLProc_glConvolutionFilter1DEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="image" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glConvolutionFilter2D"
+              c:type="GdkGLProc_glConvolutionFilter2D">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="image" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glConvolutionFilter2DEXT"
+              c:type="GdkGLProc_glConvolutionFilter2DEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="image" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glConvolutionParameterf"
+              c:type="GdkGLProc_glConvolutionParameterf">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glConvolutionParameterfEXT"
+              c:type="GdkGLProc_glConvolutionParameterfEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glConvolutionParameterfv"
+              c:type="GdkGLProc_glConvolutionParameterfv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glConvolutionParameterfvEXT"
+              c:type="GdkGLProc_glConvolutionParameterfvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glConvolutionParameteri"
+              c:type="GdkGLProc_glConvolutionParameteri">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glConvolutionParameteriEXT"
+              c:type="GdkGLProc_glConvolutionParameteriEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glConvolutionParameteriv"
+              c:type="GdkGLProc_glConvolutionParameteriv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glConvolutionParameterivEXT"
+              c:type="GdkGLProc_glConvolutionParameterivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCopyColorSubTable"
+              c:type="GdkGLProc_glCopyColorSubTable">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCopyColorSubTableEXT"
+              c:type="GdkGLProc_glCopyColorSubTableEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCopyColorTable"
+              c:type="GdkGLProc_glCopyColorTable">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCopyColorTableSGI"
+              c:type="GdkGLProc_glCopyColorTableSGI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCopyConvolutionFilter1D"
+              c:type="GdkGLProc_glCopyConvolutionFilter1D">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCopyConvolutionFilter1DEXT"
+              c:type="GdkGLProc_glCopyConvolutionFilter1DEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCopyConvolutionFilter2D"
+              c:type="GdkGLProc_glCopyConvolutionFilter2D">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCopyConvolutionFilter2DEXT"
+              c:type="GdkGLProc_glCopyConvolutionFilter2DEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCopyTexImage1DEXT"
+              c:type="GdkGLProc_glCopyTexImage1DEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="border" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCopyTexImage2DEXT"
+              c:type="GdkGLProc_glCopyTexImage2DEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="border" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCopyTexSubImage1DEXT"
+              c:type="GdkGLProc_glCopyTexSubImage1DEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="xoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCopyTexSubImage2DEXT"
+              c:type="GdkGLProc_glCopyTexSubImage2DEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="xoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="yoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCopyTexSubImage3D"
+              c:type="GdkGLProc_glCopyTexSubImage3D">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="xoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="yoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="zoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCopyTexSubImage3DEXT"
+              c:type="GdkGLProc_glCopyTexSubImage3DEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="xoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="yoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="zoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCullParameterdvEXT"
+              c:type="GdkGLProc_glCullParameterdvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCullParameterfvEXT"
+              c:type="GdkGLProc_glCullParameterfvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glCurrentPaletteMatrixARB"
+              c:type="GdkGLProc_glCurrentPaletteMatrixARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDeformSGIX" c:type="GdkGLProc_glDeformSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mask" transfer-ownership="none">
+          <type name="GLbitfield" c:type="GLbitfield"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDeformationMap3dSGIX"
+              c:type="GdkGLProc_glDeformationMap3dSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="u1" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="u2" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="ustride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="uorder" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="vstride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="vorder" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="w1" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="w2" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="wstride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="worder" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="points" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDeformationMap3fSGIX"
+              c:type="GdkGLProc_glDeformationMap3fSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="u1" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="u2" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="ustride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="uorder" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="vstride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="vorder" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="w1" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="w2" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="wstride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="worder" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="points" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDeleteAsyncMarkersSGIX"
+              c:type="GdkGLProc_glDeleteAsyncMarkersSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="marker" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="range" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDeleteBufferRegion"
+              c:type="GdkGLProc_glDeleteBufferRegion">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="region" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDeleteBuffersARB"
+              c:type="GdkGLProc_glDeleteBuffersARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="buffers" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDeleteFencesAPPLE"
+              c:type="GdkGLProc_glDeleteFencesAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="fences" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDeleteFencesNV"
+              c:type="GdkGLProc_glDeleteFencesNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="fences" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDeleteFragmentShaderATI"
+              c:type="GdkGLProc_glDeleteFragmentShaderATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDeleteOcclusionQueriesNV"
+              c:type="GdkGLProc_glDeleteOcclusionQueriesNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="ids" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDeleteProgramsARB"
+              c:type="GdkGLProc_glDeleteProgramsARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="programs" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDeleteProgramsNV"
+              c:type="GdkGLProc_glDeleteProgramsNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="programs" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDeleteTexturesEXT"
+              c:type="GdkGLProc_glDeleteTexturesEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="textures" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDeleteVertexArraysAPPLE"
+              c:type="GdkGLProc_glDeleteVertexArraysAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="arrays" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDeleteVertexShaderEXT"
+              c:type="GdkGLProc_glDeleteVertexShaderEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDepthBoundsEXT"
+              c:type="GdkGLProc_glDepthBoundsEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="zmin" transfer-ownership="none">
+          <type name="GLclampd" c:type="GLclampd"/>
+        </parameter>
+        <parameter name="zmax" transfer-ownership="none">
+          <type name="GLclampd" c:type="GLclampd"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDetailTexFuncSGIS"
+              c:type="GdkGLProc_glDetailTexFuncSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="points" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDisableVariantClientStateEXT"
+              c:type="GdkGLProc_glDisableVariantClientStateEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDisableVertexAttribAPPLE"
+              c:type="GdkGLProc_glDisableVertexAttribAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDisableVertexAttribArrayARB"
+              c:type="GdkGLProc_glDisableVertexAttribArrayARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDrawArraysEXT"
+              c:type="GdkGLProc_glDrawArraysEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDrawBufferRegion"
+              c:type="GdkGLProc_glDrawBufferRegion">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="region" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="xDest" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="yDest" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDrawBuffersATI"
+              c:type="GdkGLProc_glDrawBuffersATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="bufs" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDrawElementArrayAPPLE"
+              c:type="GdkGLProc_glDrawElementArrayAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDrawElementArrayATI"
+              c:type="GdkGLProc_glDrawElementArrayATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDrawElementArrayNV"
+              c:type="GdkGLProc_glDrawElementArrayNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDrawMeshArraysSUN"
+              c:type="GdkGLProc_glDrawMeshArraysSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDrawRangeElementArrayAPPLE"
+              c:type="GdkGLProc_glDrawRangeElementArrayAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDrawRangeElementArrayATI"
+              c:type="GdkGLProc_glDrawRangeElementArrayATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDrawRangeElementArrayNV"
+              c:type="GdkGLProc_glDrawRangeElementArrayNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDrawRangeElements"
+              c:type="GdkGLProc_glDrawRangeElements">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="indices" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glDrawRangeElementsEXT"
+              c:type="GdkGLProc_glDrawRangeElementsEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="indices" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glEdgeFlagPointerEXT"
+              c:type="GdkGLProc_glEdgeFlagPointerEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glEdgeFlagPointerListIBM"
+              c:type="GdkGLProc_glEdgeFlagPointerListIBM">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean**"/>
+        </parameter>
+        <parameter name="ptrstride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glElementPointerAPPLE"
+              c:type="GdkGLProc_glElementPointerAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glElementPointerATI"
+              c:type="GdkGLProc_glElementPointerATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glElementPointerNV"
+              c:type="GdkGLProc_glElementPointerNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glEnableVariantClientStateEXT"
+              c:type="GdkGLProc_glEnableVariantClientStateEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glEnableVertexAttribAPPLE"
+              c:type="GdkGLProc_glEnableVertexAttribAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glEnableVertexAttribArrayARB"
+              c:type="GdkGLProc_glEnableVertexAttribArrayARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glEndFragmentShaderATI"
+              c:type="GdkGLProc_glEndFragmentShaderATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="GdkGLProc_glEndOcclusionQueryNV"
+              c:type="GdkGLProc_glEndOcclusionQueryNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="GdkGLProc_glEndSceneEXT" c:type="GdkGLProc_glEndSceneEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="GdkGLProc_glEndVertexShaderEXT"
+              c:type="GdkGLProc_glEndVertexShaderEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="GdkGLProc_glEvalMapsNV" c:type="GdkGLProc_glEvalMapsNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glExecuteProgramNV"
+              c:type="GdkGLProc_glExecuteProgramNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glExtractComponentEXT"
+              c:type="GdkGLProc_glExtractComponentEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="res" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFacetNormal3b"
+              c:type="GdkGLProc_glFacetNormal3b">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFacetNormal3bv"
+              c:type="GdkGLProc_glFacetNormal3bv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFacetNormal3d"
+              c:type="GdkGLProc_glFacetNormal3d">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFacetNormal3dv"
+              c:type="GdkGLProc_glFacetNormal3dv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFacetNormal3f"
+              c:type="GdkGLProc_glFacetNormal3f">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFacetNormal3fv"
+              c:type="GdkGLProc_glFacetNormal3fv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFacetNormal3i"
+              c:type="GdkGLProc_glFacetNormal3i">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFacetNormal3iv"
+              c:type="GdkGLProc_glFacetNormal3iv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFacetNormal3s"
+              c:type="GdkGLProc_glFacetNormal3s">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFacetNormal3sv"
+              c:type="GdkGLProc_glFacetNormal3sv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFinalCombinerInputNV"
+              c:type="GdkGLProc_glFinalCombinerInputNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="variable" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="input" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="mapping" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="componentUsage" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFinishAsyncSGIX"
+              c:type="GdkGLProc_glFinishAsyncSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLint" c:type="GLint"/>
+      </return-value>
+      <parameters>
+        <parameter name="markerp" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFinishFenceAPPLE"
+              c:type="GdkGLProc_glFinishFenceAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="fence" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFinishFenceNV"
+              c:type="GdkGLProc_glFinishFenceNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="fence" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFinishObjectAPPLE"
+              c:type="GdkGLProc_glFinishObjectAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFinishTextureSUNX"
+              c:type="GdkGLProc_glFinishTextureSUNX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="GdkGLProc_glFlushPixelDataRangeNV"
+              c:type="GdkGLProc_glFlushPixelDataRangeNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFlushRasterSGIX"
+              c:type="GdkGLProc_glFlushRasterSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="GdkGLProc_glFlushStaticDataIBM"
+              c:type="GdkGLProc_glFlushStaticDataIBM">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFlushVertexArrayRangeAPPLE"
+              c:type="GdkGLProc_glFlushVertexArrayRangeAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="length" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFlushVertexArrayRangeNV"
+              c:type="GdkGLProc_glFlushVertexArrayRangeNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="GdkGLProc_glFogCoordPointer"
+              c:type="GdkGLProc_glFogCoordPointer">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFogCoordPointerEXT"
+              c:type="GdkGLProc_glFogCoordPointerEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFogCoordPointerListIBM"
+              c:type="GdkGLProc_glFogCoordPointerListIBM">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+        <parameter name="ptrstride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFogCoordd" c:type="GdkGLProc_glFogCoordd">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="coord" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFogCoorddEXT"
+              c:type="GdkGLProc_glFogCoorddEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="coord" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFogCoorddv" c:type="GdkGLProc_glFogCoorddv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="coord" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFogCoorddvEXT"
+              c:type="GdkGLProc_glFogCoorddvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="coord" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFogCoordf" c:type="GdkGLProc_glFogCoordf">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="coord" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFogCoordfEXT"
+              c:type="GdkGLProc_glFogCoordfEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="coord" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFogCoordfv" c:type="GdkGLProc_glFogCoordfv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="coord" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFogCoordfvEXT"
+              c:type="GdkGLProc_glFogCoordfvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="coord" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFogCoordhNV" c:type="GdkGLProc_glFogCoordhNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="fog" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFogCoordhvNV"
+              c:type="GdkGLProc_glFogCoordhvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="fog" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFogFuncSGIS" c:type="GdkGLProc_glFogFuncSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="points" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentColorMaterialEXT"
+              c:type="GdkGLProc_glFragmentColorMaterialEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentColorMaterialSGIX"
+              c:type="GdkGLProc_glFragmentColorMaterialSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentLightModelfEXT"
+              c:type="GdkGLProc_glFragmentLightModelfEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentLightModelfSGIX"
+              c:type="GdkGLProc_glFragmentLightModelfSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentLightModelfvEXT"
+              c:type="GdkGLProc_glFragmentLightModelfvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentLightModelfvSGIX"
+              c:type="GdkGLProc_glFragmentLightModelfvSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentLightModeliEXT"
+              c:type="GdkGLProc_glFragmentLightModeliEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentLightModeliSGIX"
+              c:type="GdkGLProc_glFragmentLightModeliSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentLightModelivEXT"
+              c:type="GdkGLProc_glFragmentLightModelivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentLightModelivSGIX"
+              c:type="GdkGLProc_glFragmentLightModelivSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentLightfEXT"
+              c:type="GdkGLProc_glFragmentLightfEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="light" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentLightfSGIX"
+              c:type="GdkGLProc_glFragmentLightfSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="light" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentLightfvEXT"
+              c:type="GdkGLProc_glFragmentLightfvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="light" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentLightfvSGIX"
+              c:type="GdkGLProc_glFragmentLightfvSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="light" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentLightiEXT"
+              c:type="GdkGLProc_glFragmentLightiEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="light" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentLightiSGIX"
+              c:type="GdkGLProc_glFragmentLightiSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="light" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentLightivEXT"
+              c:type="GdkGLProc_glFragmentLightivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="light" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentLightivSGIX"
+              c:type="GdkGLProc_glFragmentLightivSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="light" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentMaterialfEXT"
+              c:type="GdkGLProc_glFragmentMaterialfEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentMaterialfSGIX"
+              c:type="GdkGLProc_glFragmentMaterialfSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentMaterialfvEXT"
+              c:type="GdkGLProc_glFragmentMaterialfvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentMaterialfvSGIX"
+              c:type="GdkGLProc_glFragmentMaterialfvSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentMaterialiEXT"
+              c:type="GdkGLProc_glFragmentMaterialiEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentMaterialiSGIX"
+              c:type="GdkGLProc_glFragmentMaterialiSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentMaterialivEXT"
+              c:type="GdkGLProc_glFragmentMaterialivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFragmentMaterialivSGIX"
+              c:type="GdkGLProc_glFragmentMaterialivSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFrameZoomSGIX"
+              c:type="GdkGLProc_glFrameZoomSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="factor" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glFreeObjectBufferATI"
+              c:type="GdkGLProc_glFreeObjectBufferATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGenAsyncMarkersSGIX"
+              c:type="GdkGLProc_glGenAsyncMarkersSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLuint" c:type="GLuint"/>
+      </return-value>
+      <parameters>
+        <parameter name="range" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGenBuffersARB"
+              c:type="GdkGLProc_glGenBuffersARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="buffers" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGenFencesAPPLE"
+              c:type="GdkGLProc_glGenFencesAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="fences" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGenFencesNV" c:type="GdkGLProc_glGenFencesNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="fences" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGenFragmentShadersATI"
+              c:type="GdkGLProc_glGenFragmentShadersATI">
+      <return-value transfer-ownership="full">
+        <type name="GLuint" c:type="GLuint"/>
+      </return-value>
+      <parameters>
+        <parameter name="range" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGenOcclusionQueriesNV"
+              c:type="GdkGLProc_glGenOcclusionQueriesNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="ids" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGenProgramsARB"
+              c:type="GdkGLProc_glGenProgramsARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="programs" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGenProgramsNV"
+              c:type="GdkGLProc_glGenProgramsNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="programs" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGenSymbolsEXT"
+              c:type="GdkGLProc_glGenSymbolsEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLuint" c:type="GLuint"/>
+      </return-value>
+      <parameters>
+        <parameter name="datatype" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="storagetype" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="range" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="components" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGenTexturesEXT"
+              c:type="GdkGLProc_glGenTexturesEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="textures" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGenVertexArraysAPPLE"
+              c:type="GdkGLProc_glGenVertexArraysAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="arrays" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGenVertexShadersEXT"
+              c:type="GdkGLProc_glGenVertexShadersEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLuint" c:type="GLuint"/>
+      </return-value>
+      <parameters>
+        <parameter name="range" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetArrayObjectfvATI"
+              c:type="GdkGLProc_glGetArrayObjectfvATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetArrayObjectivATI"
+              c:type="GdkGLProc_glGetArrayObjectivATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetBufferParameterivARB"
+              c:type="GdkGLProc_glGetBufferParameterivARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetBufferPointervARB"
+              c:type="GdkGLProc_glGetBufferPointervARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetBufferSubDataARB"
+              c:type="GdkGLProc_glGetBufferSubDataARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="GLintptrARB" c:type="GLintptrARB"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLsizeiptrARB" c:type="GLsizeiptrARB"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetColorTable"
+              c:type="GdkGLProc_glGetColorTable">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="table" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetColorTableEXT"
+              c:type="GdkGLProc_glGetColorTableEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetColorTableParameterfv"
+              c:type="GdkGLProc_glGetColorTableParameterfv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetColorTableParameterfvEXT"
+              c:type="GdkGLProc_glGetColorTableParameterfvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetColorTableParameterfvSGI"
+              c:type="GdkGLProc_glGetColorTableParameterfvSGI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetColorTableParameteriv"
+              c:type="GdkGLProc_glGetColorTableParameteriv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetColorTableParameterivEXT"
+              c:type="GdkGLProc_glGetColorTableParameterivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetColorTableParameterivSGI"
+              c:type="GdkGLProc_glGetColorTableParameterivSGI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetColorTableSGI"
+              c:type="GdkGLProc_glGetColorTableSGI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="table" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetCombinerInputParameterfvNV"
+              c:type="GdkGLProc_glGetCombinerInputParameterfvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stage" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="portion" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="variable" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetCombinerInputParameterivNV"
+              c:type="GdkGLProc_glGetCombinerInputParameterivNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stage" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="portion" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="variable" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetCombinerOutputParameterfvNV"
+              c:type="GdkGLProc_glGetCombinerOutputParameterfvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stage" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="portion" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetCombinerOutputParameterivNV"
+              c:type="GdkGLProc_glGetCombinerOutputParameterivNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stage" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="portion" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetCombinerStageParameterfvNV"
+              c:type="GdkGLProc_glGetCombinerStageParameterfvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stage" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetCompressedTexImage"
+              c:type="GdkGLProc_glGetCompressedTexImage">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="img" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetCompressedTexImageARB"
+              c:type="GdkGLProc_glGetCompressedTexImageARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="img" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetConvolutionFilter"
+              c:type="GdkGLProc_glGetConvolutionFilter">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="image" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetConvolutionFilterEXT"
+              c:type="GdkGLProc_glGetConvolutionFilterEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="image" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetConvolutionParameterfv"
+              c:type="GdkGLProc_glGetConvolutionParameterfv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetConvolutionParameterfvEXT"
+              c:type="GdkGLProc_glGetConvolutionParameterfvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetConvolutionParameteriv"
+              c:type="GdkGLProc_glGetConvolutionParameteriv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetConvolutionParameterivEXT"
+              c:type="GdkGLProc_glGetConvolutionParameterivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetDetailTexFuncSGIS"
+              c:type="GdkGLProc_glGetDetailTexFuncSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="points" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetFenceivNV"
+              c:type="GdkGLProc_glGetFenceivNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="fence" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetFinalCombinerInputParameterfvNV"
+              c:type="GdkGLProc_glGetFinalCombinerInputParameterfvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="variable" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetFinalCombinerInputParameterivNV"
+              c:type="GdkGLProc_glGetFinalCombinerInputParameterivNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="variable" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetFogFuncSGIS"
+              c:type="GdkGLProc_glGetFogFuncSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="points" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetFragmentLightfvEXT"
+              c:type="GdkGLProc_glGetFragmentLightfvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="light" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetFragmentLightfvSGIX"
+              c:type="GdkGLProc_glGetFragmentLightfvSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="light" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetFragmentLightivEXT"
+              c:type="GdkGLProc_glGetFragmentLightivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="light" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetFragmentLightivSGIX"
+              c:type="GdkGLProc_glGetFragmentLightivSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="light" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetFragmentMaterialfvEXT"
+              c:type="GdkGLProc_glGetFragmentMaterialfvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetFragmentMaterialfvSGIX"
+              c:type="GdkGLProc_glGetFragmentMaterialfvSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetFragmentMaterialivEXT"
+              c:type="GdkGLProc_glGetFragmentMaterialivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetFragmentMaterialivSGIX"
+              c:type="GdkGLProc_glGetFragmentMaterialivSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetHistogram"
+              c:type="GdkGLProc_glGetHistogram">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="reset" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="values" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetHistogramEXT"
+              c:type="GdkGLProc_glGetHistogramEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="reset" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="values" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetHistogramParameterfv"
+              c:type="GdkGLProc_glGetHistogramParameterfv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetHistogramParameterfvEXT"
+              c:type="GdkGLProc_glGetHistogramParameterfvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetHistogramParameteriv"
+              c:type="GdkGLProc_glGetHistogramParameteriv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetHistogramParameterivEXT"
+              c:type="GdkGLProc_glGetHistogramParameterivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetImageTransformParameterfvHP"
+              c:type="GdkGLProc_glGetImageTransformParameterfvHP">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetImageTransformParameterivHP"
+              c:type="GdkGLProc_glGetImageTransformParameterivHP">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetInstrumentsSGIX"
+              c:type="GdkGLProc_glGetInstrumentsSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLint" c:type="GLint"/>
+      </return-value>
+    </callback>
+    <callback name="GdkGLProc_glGetInvariantBooleanvEXT"
+              c:type="GdkGLProc_glGetInvariantBooleanvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetInvariantFloatvEXT"
+              c:type="GdkGLProc_glGetInvariantFloatvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetInvariantIntegervEXT"
+              c:type="GdkGLProc_glGetInvariantIntegervEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetListParameterfvSGIX"
+              c:type="GdkGLProc_glGetListParameterfvSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetListParameterivSGIX"
+              c:type="GdkGLProc_glGetListParameterivSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetLocalConstantBooleanvEXT"
+              c:type="GdkGLProc_glGetLocalConstantBooleanvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetLocalConstantFloatvEXT"
+              c:type="GdkGLProc_glGetLocalConstantFloatvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetLocalConstantIntegervEXT"
+              c:type="GdkGLProc_glGetLocalConstantIntegervEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetMapAttribParameterfvNV"
+              c:type="GdkGLProc_glGetMapAttribParameterfvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetMapAttribParameterivNV"
+              c:type="GdkGLProc_glGetMapAttribParameterivNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetMapControlPointsNV"
+              c:type="GdkGLProc_glGetMapControlPointsNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="ustride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="vstride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="packed" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+        <parameter name="points" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetMapParameterfvNV"
+              c:type="GdkGLProc_glGetMapParameterfvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetMapParameterivNV"
+              c:type="GdkGLProc_glGetMapParameterivNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetMinmax" c:type="GdkGLProc_glGetMinmax">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="reset" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="values" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetMinmaxEXT"
+              c:type="GdkGLProc_glGetMinmaxEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="reset" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="values" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetMinmaxParameterfv"
+              c:type="GdkGLProc_glGetMinmaxParameterfv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetMinmaxParameterfvEXT"
+              c:type="GdkGLProc_glGetMinmaxParameterfvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetMinmaxParameteriv"
+              c:type="GdkGLProc_glGetMinmaxParameteriv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetMinmaxParameterivEXT"
+              c:type="GdkGLProc_glGetMinmaxParameterivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetObjectBufferfvATI"
+              c:type="GdkGLProc_glGetObjectBufferfvATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetObjectBufferivATI"
+              c:type="GdkGLProc_glGetObjectBufferivATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetOcclusionQueryivNV"
+              c:type="GdkGLProc_glGetOcclusionQueryivNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetOcclusionQueryuivNV"
+              c:type="GdkGLProc_glGetOcclusionQueryuivNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetPixelTexGenParameterfvSGIS"
+              c:type="GdkGLProc_glGetPixelTexGenParameterfvSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetPixelTexGenParameterivSGIS"
+              c:type="GdkGLProc_glGetPixelTexGenParameterivSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetPointervEXT"
+              c:type="GdkGLProc_glGetPointervEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetProgramEnvParameterdvARB"
+              c:type="GdkGLProc_glGetProgramEnvParameterdvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetProgramEnvParameterfvARB"
+              c:type="GdkGLProc_glGetProgramEnvParameterfvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetProgramLocalParameterdvARB"
+              c:type="GdkGLProc_glGetProgramLocalParameterdvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetProgramLocalParameterfvARB"
+              c:type="GdkGLProc_glGetProgramLocalParameterfvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetProgramNamedParameterdvNV"
+              c:type="GdkGLProc_glGetProgramNamedParameterdvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetProgramNamedParameterfvNV"
+              c:type="GdkGLProc_glGetProgramNamedParameterfvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetProgramParameterdvNV"
+              c:type="GdkGLProc_glGetProgramParameterdvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetProgramParameterfvNV"
+              c:type="GdkGLProc_glGetProgramParameterfvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetProgramStringARB"
+              c:type="GdkGLProc_glGetProgramStringARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetProgramStringNV"
+              c:type="GdkGLProc_glGetProgramStringNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="program" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetProgramivARB"
+              c:type="GdkGLProc_glGetProgramivARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetProgramivNV"
+              c:type="GdkGLProc_glGetProgramivNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetSeparableFilter"
+              c:type="GdkGLProc_glGetSeparableFilter">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="row" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+        <parameter name="column" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+        <parameter name="span" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetSeparableFilterEXT"
+              c:type="GdkGLProc_glGetSeparableFilterEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="row" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+        <parameter name="column" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+        <parameter name="span" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetSharpenTexFuncSGIS"
+              c:type="GdkGLProc_glGetSharpenTexFuncSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="points" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetTexBumpParameterfvATI"
+              c:type="GdkGLProc_glGetTexBumpParameterfvATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetTexBumpParameterivATI"
+              c:type="GdkGLProc_glGetTexBumpParameterivATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetTexFilterFuncSGIS"
+              c:type="GdkGLProc_glGetTexFilterFuncSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="filter" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="weights" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetTexParameterPointervAPPLE"
+              c:type="GdkGLProc_glGetTexParameterPointervAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetTrackMatrixivNV"
+              c:type="GdkGLProc_glGetTrackMatrixivNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="address" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetVariantArrayObjectfvATI"
+              c:type="GdkGLProc_glGetVariantArrayObjectfvATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetVariantArrayObjectivATI"
+              c:type="GdkGLProc_glGetVariantArrayObjectivATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetVariantBooleanvEXT"
+              c:type="GdkGLProc_glGetVariantBooleanvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetVariantFloatvEXT"
+              c:type="GdkGLProc_glGetVariantFloatvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetVariantIntegervEXT"
+              c:type="GdkGLProc_glGetVariantIntegervEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetVariantPointervEXT"
+              c:type="GdkGLProc_glGetVariantPointervEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetVertexAttribArrayObjectfvATI"
+              c:type="GdkGLProc_glGetVertexAttribArrayObjectfvATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetVertexAttribArrayObjectivATI"
+              c:type="GdkGLProc_glGetVertexAttribArrayObjectivATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetVertexAttribPointervARB"
+              c:type="GdkGLProc_glGetVertexAttribPointervARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetVertexAttribPointervNV"
+              c:type="GdkGLProc_glGetVertexAttribPointervNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetVertexAttribdvARB"
+              c:type="GdkGLProc_glGetVertexAttribdvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetVertexAttribdvNV"
+              c:type="GdkGLProc_glGetVertexAttribdvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetVertexAttribfvARB"
+              c:type="GdkGLProc_glGetVertexAttribfvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetVertexAttribfvNV"
+              c:type="GdkGLProc_glGetVertexAttribfvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetVertexAttribivARB"
+              c:type="GdkGLProc_glGetVertexAttribivARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGetVertexAttribivNV"
+              c:type="GdkGLProc_glGetVertexAttribivNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGlobalAlphaFactorbSUN"
+              c:type="GdkGLProc_glGlobalAlphaFactorbSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="factor" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGlobalAlphaFactordSUN"
+              c:type="GdkGLProc_glGlobalAlphaFactordSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="factor" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGlobalAlphaFactorfSUN"
+              c:type="GdkGLProc_glGlobalAlphaFactorfSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="factor" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGlobalAlphaFactoriSUN"
+              c:type="GdkGLProc_glGlobalAlphaFactoriSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="factor" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGlobalAlphaFactorsSUN"
+              c:type="GdkGLProc_glGlobalAlphaFactorsSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="factor" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGlobalAlphaFactorubSUN"
+              c:type="GdkGLProc_glGlobalAlphaFactorubSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="factor" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGlobalAlphaFactoruiSUN"
+              c:type="GdkGLProc_glGlobalAlphaFactoruiSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="factor" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glGlobalAlphaFactorusSUN"
+              c:type="GdkGLProc_glGlobalAlphaFactorusSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="factor" transfer-ownership="none">
+          <type name="GLushort" c:type="GLushort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glHintPGI" c:type="GdkGLProc_glHintPGI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glHistogram" c:type="GdkGLProc_glHistogram">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="sink" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glHistogramEXT"
+              c:type="GdkGLProc_glHistogramEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="sink" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glIglooInterfaceSGIX"
+              c:type="GdkGLProc_glIglooInterfaceSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glImageTransformParameterfHP"
+              c:type="GdkGLProc_glImageTransformParameterfHP">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glImageTransformParameterfvHP"
+              c:type="GdkGLProc_glImageTransformParameterfvHP">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glImageTransformParameteriHP"
+              c:type="GdkGLProc_glImageTransformParameteriHP">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glImageTransformParameterivHP"
+              c:type="GdkGLProc_glImageTransformParameterivHP">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glIndexFuncEXT"
+              c:type="GdkGLProc_glIndexFuncEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="func" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="ref" transfer-ownership="none">
+          <type name="GLclampf" c:type="GLclampf"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glIndexMaterialEXT"
+              c:type="GdkGLProc_glIndexMaterialEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glIndexPointerEXT"
+              c:type="GdkGLProc_glIndexPointerEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glIndexPointerListIBM"
+              c:type="GdkGLProc_glIndexPointerListIBM">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+        <parameter name="ptrstride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glInsertComponentEXT"
+              c:type="GdkGLProc_glInsertComponentEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="res" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="src" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="num" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glInstrumentsBufferSGIX"
+              c:type="GdkGLProc_glInstrumentsBufferSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glInterleavedTextureCoordSetsEXT"
+              c:type="GdkGLProc_glInterleavedTextureCoordSetsEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="factor" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glIsAsyncMarkerSGIX"
+              c:type="GdkGLProc_glIsAsyncMarkerSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="marker" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glIsBufferARB" c:type="GdkGLProc_glIsBufferARB">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glIsFenceAPPLE"
+              c:type="GdkGLProc_glIsFenceAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="fence" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glIsFenceNV" c:type="GdkGLProc_glIsFenceNV">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="fence" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glIsObjectBufferATI"
+              c:type="GdkGLProc_glIsObjectBufferATI">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glIsOcclusionQueryNV"
+              c:type="GdkGLProc_glIsOcclusionQueryNV">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glIsProgramARB"
+              c:type="GdkGLProc_glIsProgramARB">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="program" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glIsProgramNV" c:type="GdkGLProc_glIsProgramNV">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glIsTextureEXT"
+              c:type="GdkGLProc_glIsTextureEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="texture" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glIsVariantEnabledEXT"
+              c:type="GdkGLProc_glIsVariantEnabledEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="cap" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glIsVertexArrayAPPLE"
+              c:type="GdkGLProc_glIsVertexArrayAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glIsVertexAttribEnabledAPPLE"
+              c:type="GdkGLProc_glIsVertexAttribEnabledAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glLightEnviEXT"
+              c:type="GdkGLProc_glLightEnviEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glLightEnviSGIX"
+              c:type="GdkGLProc_glLightEnviSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glListParameterfSGIX"
+              c:type="GdkGLProc_glListParameterfSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glListParameterfvSGIX"
+              c:type="GdkGLProc_glListParameterfvSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glListParameteriSGIX"
+              c:type="GdkGLProc_glListParameteriSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glListParameterivSGIX"
+              c:type="GdkGLProc_glListParameterivSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glLoadIdentityDeformationMapSGIX"
+              c:type="GdkGLProc_glLoadIdentityDeformationMapSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mask" transfer-ownership="none">
+          <type name="GLbitfield" c:type="GLbitfield"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glLoadProgramNV"
+              c:type="GdkGLProc_glLoadProgramNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="program" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glLoadTransposeMatrixd"
+              c:type="GdkGLProc_glLoadTransposeMatrixd">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="m" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glLoadTransposeMatrixdARB"
+              c:type="GdkGLProc_glLoadTransposeMatrixdARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="m" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glLoadTransposeMatrixf"
+              c:type="GdkGLProc_glLoadTransposeMatrixf">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="m" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glLoadTransposeMatrixfARB"
+              c:type="GdkGLProc_glLoadTransposeMatrixfARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="m" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glLockArraysEXT"
+              c:type="GdkGLProc_glLockArraysEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="first" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMapBufferARB"
+              c:type="GdkGLProc_glMapBufferARB">
+      <return-value transfer-ownership="full">
+        <type name="GLvoid" c:type="GLvoid*"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="access" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMapControlPointsNV"
+              c:type="GdkGLProc_glMapControlPointsNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="ustride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="vstride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="uorder" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="vorder" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="packed" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+        <parameter name="points" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMapObjectBufferATI"
+              c:type="GdkGLProc_glMapObjectBufferATI">
+      <return-value transfer-ownership="full">
+        <type name="GLvoid" c:type="GLvoid*"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMapParameterfvNV"
+              c:type="GdkGLProc_glMapParameterfvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMapParameterivNV"
+              c:type="GdkGLProc_glMapParameterivNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMapVertexAttrib1dAPPLE"
+              c:type="GdkGLProc_glMapVertexAttrib1dAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="u1" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="u2" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="order" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="points" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMapVertexAttrib1fAPPLE"
+              c:type="GdkGLProc_glMapVertexAttrib1fAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="u1" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="u2" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="order" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="points" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMapVertexAttrib2dAPPLE"
+              c:type="GdkGLProc_glMapVertexAttrib2dAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="u1" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="u2" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="ustride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="uorder" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="vstride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="vorder" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="points" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMapVertexAttrib2fAPPLE"
+              c:type="GdkGLProc_glMapVertexAttrib2fAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="u1" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="u2" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="ustride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="uorder" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="vstride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="vorder" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="points" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMatrixIndexPointerARB"
+              c:type="GdkGLProc_glMatrixIndexPointerARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMatrixIndexubvARB"
+              c:type="GdkGLProc_glMatrixIndexubvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="indices" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMatrixIndexuivARB"
+              c:type="GdkGLProc_glMatrixIndexuivARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="indices" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMatrixIndexusvARB"
+              c:type="GdkGLProc_glMatrixIndexusvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="indices" transfer-ownership="none">
+          <type name="GLushort" c:type="GLushort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMinmax" c:type="GdkGLProc_glMinmax">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="sink" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMinmaxEXT" c:type="GdkGLProc_glMinmaxEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="sink" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultTransposeMatrixd"
+              c:type="GdkGLProc_glMultTransposeMatrixd">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="m" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultTransposeMatrixdARB"
+              c:type="GdkGLProc_glMultTransposeMatrixdARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="m" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultTransposeMatrixf"
+              c:type="GdkGLProc_glMultTransposeMatrixf">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="m" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultTransposeMatrixfARB"
+              c:type="GdkGLProc_glMultTransposeMatrixfARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="m" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiDrawArrays"
+              c:type="GdkGLProc_glMultiDrawArrays">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei*"/>
+        </parameter>
+        <parameter name="primcount" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiDrawArraysEXT"
+              c:type="GdkGLProc_glMultiDrawArraysEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei*"/>
+        </parameter>
+        <parameter name="primcount" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiDrawArraysSUN"
+              c:type="GdkGLProc_glMultiDrawArraysSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei*"/>
+        </parameter>
+        <parameter name="primcount" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiDrawElementArrayAPPLE"
+              c:type="GdkGLProc_glMultiDrawElementArrayAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei*"/>
+        </parameter>
+        <parameter name="primcount" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiDrawElementArrayNV"
+              c:type="GdkGLProc_glMultiDrawElementArrayNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei*"/>
+        </parameter>
+        <parameter name="primcount" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiDrawElements"
+              c:type="GdkGLProc_glMultiDrawElements">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="indices" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+        <parameter name="primcount" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiDrawElementsEXT"
+              c:type="GdkGLProc_glMultiDrawElementsEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="indices" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+        <parameter name="primcount" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiDrawElementsSUN"
+              c:type="GdkGLProc_glMultiDrawElementsSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="indices" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+        <parameter name="primcount" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiDrawRangeElementArrayAPPLE"
+              c:type="GdkGLProc_glMultiDrawRangeElementArrayAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei*"/>
+        </parameter>
+        <parameter name="primcount" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiDrawRangeElementArrayNV"
+              c:type="GdkGLProc_glMultiDrawRangeElementArrayNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="start" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei*"/>
+        </parameter>
+        <parameter name="primcount" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiModeDrawArraysIBM"
+              c:type="GdkGLProc_glMultiModeDrawArraysIBM">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei*"/>
+        </parameter>
+        <parameter name="primcount" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="modestride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiModeDrawElementsIBM"
+              c:type="GdkGLProc_glMultiModeDrawElementsIBM">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum*"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="indices" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+        <parameter name="primcount" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="modestride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1d"
+              c:type="GdkGLProc_glMultiTexCoord1d">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1dARB"
+              c:type="GdkGLProc_glMultiTexCoord1dARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1dEXT"
+              c:type="GdkGLProc_glMultiTexCoord1dEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1dSGIS"
+              c:type="GdkGLProc_glMultiTexCoord1dSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1dv"
+              c:type="GdkGLProc_glMultiTexCoord1dv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1dvARB"
+              c:type="GdkGLProc_glMultiTexCoord1dvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1dvEXT"
+              c:type="GdkGLProc_glMultiTexCoord1dvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1dvSGIS"
+              c:type="GdkGLProc_glMultiTexCoord1dvSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1f"
+              c:type="GdkGLProc_glMultiTexCoord1f">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1fARB"
+              c:type="GdkGLProc_glMultiTexCoord1fARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1fEXT"
+              c:type="GdkGLProc_glMultiTexCoord1fEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1fSGIS"
+              c:type="GdkGLProc_glMultiTexCoord1fSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1fv"
+              c:type="GdkGLProc_glMultiTexCoord1fv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1fvARB"
+              c:type="GdkGLProc_glMultiTexCoord1fvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1fvEXT"
+              c:type="GdkGLProc_glMultiTexCoord1fvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1fvSGIS"
+              c:type="GdkGLProc_glMultiTexCoord1fvSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1hNV"
+              c:type="GdkGLProc_glMultiTexCoord1hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1hvNV"
+              c:type="GdkGLProc_glMultiTexCoord1hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1i"
+              c:type="GdkGLProc_glMultiTexCoord1i">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1iARB"
+              c:type="GdkGLProc_glMultiTexCoord1iARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1iEXT"
+              c:type="GdkGLProc_glMultiTexCoord1iEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1iSGIS"
+              c:type="GdkGLProc_glMultiTexCoord1iSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1iv"
+              c:type="GdkGLProc_glMultiTexCoord1iv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1ivARB"
+              c:type="GdkGLProc_glMultiTexCoord1ivARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1ivEXT"
+              c:type="GdkGLProc_glMultiTexCoord1ivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1ivSGIS"
+              c:type="GdkGLProc_glMultiTexCoord1ivSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1s"
+              c:type="GdkGLProc_glMultiTexCoord1s">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1sARB"
+              c:type="GdkGLProc_glMultiTexCoord1sARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1sEXT"
+              c:type="GdkGLProc_glMultiTexCoord1sEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1sSGIS"
+              c:type="GdkGLProc_glMultiTexCoord1sSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1sv"
+              c:type="GdkGLProc_glMultiTexCoord1sv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1svARB"
+              c:type="GdkGLProc_glMultiTexCoord1svARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1svEXT"
+              c:type="GdkGLProc_glMultiTexCoord1svEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord1svSGIS"
+              c:type="GdkGLProc_glMultiTexCoord1svSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2d"
+              c:type="GdkGLProc_glMultiTexCoord2d">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2dARB"
+              c:type="GdkGLProc_glMultiTexCoord2dARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2dEXT"
+              c:type="GdkGLProc_glMultiTexCoord2dEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2dSGIS"
+              c:type="GdkGLProc_glMultiTexCoord2dSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2dv"
+              c:type="GdkGLProc_glMultiTexCoord2dv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2dvARB"
+              c:type="GdkGLProc_glMultiTexCoord2dvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2dvEXT"
+              c:type="GdkGLProc_glMultiTexCoord2dvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2dvSGIS"
+              c:type="GdkGLProc_glMultiTexCoord2dvSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2f"
+              c:type="GdkGLProc_glMultiTexCoord2f">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2fARB"
+              c:type="GdkGLProc_glMultiTexCoord2fARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2fEXT"
+              c:type="GdkGLProc_glMultiTexCoord2fEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2fSGIS"
+              c:type="GdkGLProc_glMultiTexCoord2fSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2fv"
+              c:type="GdkGLProc_glMultiTexCoord2fv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2fvARB"
+              c:type="GdkGLProc_glMultiTexCoord2fvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2fvEXT"
+              c:type="GdkGLProc_glMultiTexCoord2fvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2fvSGIS"
+              c:type="GdkGLProc_glMultiTexCoord2fvSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2hNV"
+              c:type="GdkGLProc_glMultiTexCoord2hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2hvNV"
+              c:type="GdkGLProc_glMultiTexCoord2hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2i"
+              c:type="GdkGLProc_glMultiTexCoord2i">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2iARB"
+              c:type="GdkGLProc_glMultiTexCoord2iARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2iEXT"
+              c:type="GdkGLProc_glMultiTexCoord2iEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2iSGIS"
+              c:type="GdkGLProc_glMultiTexCoord2iSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2iv"
+              c:type="GdkGLProc_glMultiTexCoord2iv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2ivARB"
+              c:type="GdkGLProc_glMultiTexCoord2ivARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2ivEXT"
+              c:type="GdkGLProc_glMultiTexCoord2ivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2ivSGIS"
+              c:type="GdkGLProc_glMultiTexCoord2ivSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2s"
+              c:type="GdkGLProc_glMultiTexCoord2s">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2sARB"
+              c:type="GdkGLProc_glMultiTexCoord2sARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2sEXT"
+              c:type="GdkGLProc_glMultiTexCoord2sEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2sSGIS"
+              c:type="GdkGLProc_glMultiTexCoord2sSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2sv"
+              c:type="GdkGLProc_glMultiTexCoord2sv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2svARB"
+              c:type="GdkGLProc_glMultiTexCoord2svARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2svEXT"
+              c:type="GdkGLProc_glMultiTexCoord2svEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord2svSGIS"
+              c:type="GdkGLProc_glMultiTexCoord2svSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3d"
+              c:type="GdkGLProc_glMultiTexCoord3d">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3dARB"
+              c:type="GdkGLProc_glMultiTexCoord3dARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3dEXT"
+              c:type="GdkGLProc_glMultiTexCoord3dEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3dSGIS"
+              c:type="GdkGLProc_glMultiTexCoord3dSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3dv"
+              c:type="GdkGLProc_glMultiTexCoord3dv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3dvARB"
+              c:type="GdkGLProc_glMultiTexCoord3dvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3dvEXT"
+              c:type="GdkGLProc_glMultiTexCoord3dvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3dvSGIS"
+              c:type="GdkGLProc_glMultiTexCoord3dvSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3f"
+              c:type="GdkGLProc_glMultiTexCoord3f">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3fARB"
+              c:type="GdkGLProc_glMultiTexCoord3fARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3fEXT"
+              c:type="GdkGLProc_glMultiTexCoord3fEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3fSGIS"
+              c:type="GdkGLProc_glMultiTexCoord3fSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3fv"
+              c:type="GdkGLProc_glMultiTexCoord3fv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3fvARB"
+              c:type="GdkGLProc_glMultiTexCoord3fvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3fvEXT"
+              c:type="GdkGLProc_glMultiTexCoord3fvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3fvSGIS"
+              c:type="GdkGLProc_glMultiTexCoord3fvSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3hNV"
+              c:type="GdkGLProc_glMultiTexCoord3hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3hvNV"
+              c:type="GdkGLProc_glMultiTexCoord3hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3i"
+              c:type="GdkGLProc_glMultiTexCoord3i">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3iARB"
+              c:type="GdkGLProc_glMultiTexCoord3iARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3iEXT"
+              c:type="GdkGLProc_glMultiTexCoord3iEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3iSGIS"
+              c:type="GdkGLProc_glMultiTexCoord3iSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3iv"
+              c:type="GdkGLProc_glMultiTexCoord3iv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3ivARB"
+              c:type="GdkGLProc_glMultiTexCoord3ivARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3ivEXT"
+              c:type="GdkGLProc_glMultiTexCoord3ivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3ivSGIS"
+              c:type="GdkGLProc_glMultiTexCoord3ivSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3s"
+              c:type="GdkGLProc_glMultiTexCoord3s">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3sARB"
+              c:type="GdkGLProc_glMultiTexCoord3sARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3sEXT"
+              c:type="GdkGLProc_glMultiTexCoord3sEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3sSGIS"
+              c:type="GdkGLProc_glMultiTexCoord3sSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3sv"
+              c:type="GdkGLProc_glMultiTexCoord3sv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3svARB"
+              c:type="GdkGLProc_glMultiTexCoord3svARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3svEXT"
+              c:type="GdkGLProc_glMultiTexCoord3svEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord3svSGIS"
+              c:type="GdkGLProc_glMultiTexCoord3svSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4d"
+              c:type="GdkGLProc_glMultiTexCoord4d">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4dARB"
+              c:type="GdkGLProc_glMultiTexCoord4dARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4dEXT"
+              c:type="GdkGLProc_glMultiTexCoord4dEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4dSGIS"
+              c:type="GdkGLProc_glMultiTexCoord4dSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4dv"
+              c:type="GdkGLProc_glMultiTexCoord4dv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4dvARB"
+              c:type="GdkGLProc_glMultiTexCoord4dvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4dvEXT"
+              c:type="GdkGLProc_glMultiTexCoord4dvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4dvSGIS"
+              c:type="GdkGLProc_glMultiTexCoord4dvSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4f"
+              c:type="GdkGLProc_glMultiTexCoord4f">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4fARB"
+              c:type="GdkGLProc_glMultiTexCoord4fARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4fEXT"
+              c:type="GdkGLProc_glMultiTexCoord4fEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4fSGIS"
+              c:type="GdkGLProc_glMultiTexCoord4fSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4fv"
+              c:type="GdkGLProc_glMultiTexCoord4fv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4fvARB"
+              c:type="GdkGLProc_glMultiTexCoord4fvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4fvEXT"
+              c:type="GdkGLProc_glMultiTexCoord4fvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4fvSGIS"
+              c:type="GdkGLProc_glMultiTexCoord4fvSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4hNV"
+              c:type="GdkGLProc_glMultiTexCoord4hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4hvNV"
+              c:type="GdkGLProc_glMultiTexCoord4hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4i"
+              c:type="GdkGLProc_glMultiTexCoord4i">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4iARB"
+              c:type="GdkGLProc_glMultiTexCoord4iARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4iEXT"
+              c:type="GdkGLProc_glMultiTexCoord4iEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4iSGIS"
+              c:type="GdkGLProc_glMultiTexCoord4iSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4iv"
+              c:type="GdkGLProc_glMultiTexCoord4iv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4ivARB"
+              c:type="GdkGLProc_glMultiTexCoord4ivARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4ivEXT"
+              c:type="GdkGLProc_glMultiTexCoord4ivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4ivSGIS"
+              c:type="GdkGLProc_glMultiTexCoord4ivSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4s"
+              c:type="GdkGLProc_glMultiTexCoord4s">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4sARB"
+              c:type="GdkGLProc_glMultiTexCoord4sARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4sEXT"
+              c:type="GdkGLProc_glMultiTexCoord4sEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4sSGIS"
+              c:type="GdkGLProc_glMultiTexCoord4sSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4sv"
+              c:type="GdkGLProc_glMultiTexCoord4sv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4svARB"
+              c:type="GdkGLProc_glMultiTexCoord4svARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4svEXT"
+              c:type="GdkGLProc_glMultiTexCoord4svEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoord4svSGIS"
+              c:type="GdkGLProc_glMultiTexCoord4svSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glMultiTexCoordPointerSGIS"
+              c:type="GdkGLProc_glMultiTexCoordPointerSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="any" c:type="void*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNewBufferRegion"
+              c:type="GdkGLProc_glNewBufferRegion">
+      <return-value transfer-ownership="full">
+        <type name="GLuint" c:type="GLuint"/>
+      </return-value>
+      <parameters>
+        <parameter name="region" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNewObjectBufferATI"
+              c:type="GdkGLProc_glNewObjectBufferATI">
+      <return-value transfer-ownership="full">
+        <type name="GLuint" c:type="GLuint"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+        <parameter name="usage" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNormal3fVertex3fSUN"
+              c:type="GdkGLProc_glNormal3fVertex3fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNormal3fVertex3fvSUN"
+              c:type="GdkGLProc_glNormal3fVertex3fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNormal3hNV" c:type="GdkGLProc_glNormal3hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNormal3hvNV" c:type="GdkGLProc_glNormal3hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNormalPointerEXT"
+              c:type="GdkGLProc_glNormalPointerEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNormalPointerListIBM"
+              c:type="GdkGLProc_glNormalPointerListIBM">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+        <parameter name="ptrstride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNormalPointervINTEL"
+              c:type="GdkGLProc_glNormalPointervINTEL">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNormalStream3bATI"
+              c:type="GdkGLProc_glNormalStream3bATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNormalStream3bvATI"
+              c:type="GdkGLProc_glNormalStream3bvATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNormalStream3dATI"
+              c:type="GdkGLProc_glNormalStream3dATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNormalStream3dvATI"
+              c:type="GdkGLProc_glNormalStream3dvATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNormalStream3fATI"
+              c:type="GdkGLProc_glNormalStream3fATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNormalStream3fvATI"
+              c:type="GdkGLProc_glNormalStream3fvATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNormalStream3iATI"
+              c:type="GdkGLProc_glNormalStream3iATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNormalStream3ivATI"
+              c:type="GdkGLProc_glNormalStream3ivATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNormalStream3sATI"
+              c:type="GdkGLProc_glNormalStream3sATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glNormalStream3svATI"
+              c:type="GdkGLProc_glNormalStream3svATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPNTrianglesfATI"
+              c:type="GdkGLProc_glPNTrianglesfATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPNTrianglesfATIX"
+              c:type="GdkGLProc_glPNTrianglesfATIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPNTrianglesiATI"
+              c:type="GdkGLProc_glPNTrianglesiATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPNTrianglesiATIX"
+              c:type="GdkGLProc_glPNTrianglesiATIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPassTexCoordATI"
+              c:type="GdkGLProc_glPassTexCoordATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dst" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="coord" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="swizzle" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPixelDataRangeNV"
+              c:type="GdkGLProc_glPixelDataRangeNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPixelTexGenParameterfSGIS"
+              c:type="GdkGLProc_glPixelTexGenParameterfSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPixelTexGenParameterfvSGIS"
+              c:type="GdkGLProc_glPixelTexGenParameterfvSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPixelTexGenParameteriSGIS"
+              c:type="GdkGLProc_glPixelTexGenParameteriSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPixelTexGenParameterivSGIS"
+              c:type="GdkGLProc_glPixelTexGenParameterivSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPixelTexGenSGIX"
+              c:type="GdkGLProc_glPixelTexGenSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPixelTransformParameterfEXT"
+              c:type="GdkGLProc_glPixelTransformParameterfEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPixelTransformParameterfvEXT"
+              c:type="GdkGLProc_glPixelTransformParameterfvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPixelTransformParameteriEXT"
+              c:type="GdkGLProc_glPixelTransformParameteriEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPixelTransformParameterivEXT"
+              c:type="GdkGLProc_glPixelTransformParameterivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPointParameterf"
+              c:type="GdkGLProc_glPointParameterf">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPointParameterfARB"
+              c:type="GdkGLProc_glPointParameterfARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPointParameterfEXT"
+              c:type="GdkGLProc_glPointParameterfEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPointParameterfSGIS"
+              c:type="GdkGLProc_glPointParameterfSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPointParameterfv"
+              c:type="GdkGLProc_glPointParameterfv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPointParameterfvARB"
+              c:type="GdkGLProc_glPointParameterfvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPointParameterfvEXT"
+              c:type="GdkGLProc_glPointParameterfvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPointParameterfvSGIS"
+              c:type="GdkGLProc_glPointParameterfvSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPointParameteri"
+              c:type="GdkGLProc_glPointParameteri">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPointParameteriNV"
+              c:type="GdkGLProc_glPointParameteriNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPointParameteriv"
+              c:type="GdkGLProc_glPointParameteriv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPointParameterivNV"
+              c:type="GdkGLProc_glPointParameterivNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPollAsyncSGIX"
+              c:type="GdkGLProc_glPollAsyncSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLint" c:type="GLint"/>
+      </return-value>
+      <parameters>
+        <parameter name="markerp" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPollInstrumentsSGIX"
+              c:type="GdkGLProc_glPollInstrumentsSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLint" c:type="GLint"/>
+      </return-value>
+      <parameters>
+        <parameter name="marker_p" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPolygonOffsetEXT"
+              c:type="GdkGLProc_glPolygonOffsetEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="factor" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="bias" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPrimitiveRestartIndexNV"
+              c:type="GdkGLProc_glPrimitiveRestartIndexNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glPrimitiveRestartNV"
+              c:type="GdkGLProc_glPrimitiveRestartNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="GdkGLProc_glPrioritizeTexturesEXT"
+              c:type="GdkGLProc_glPrioritizeTexturesEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="textures" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+        <parameter name="priorities" transfer-ownership="none">
+          <type name="GLclampf" c:type="GLclampf*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramEnvParameter4dARB"
+              c:type="GdkGLProc_glProgramEnvParameter4dARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramEnvParameter4dvARB"
+              c:type="GdkGLProc_glProgramEnvParameter4dvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramEnvParameter4fARB"
+              c:type="GdkGLProc_glProgramEnvParameter4fARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramEnvParameter4fvARB"
+              c:type="GdkGLProc_glProgramEnvParameter4fvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramLocalParameter4dARB"
+              c:type="GdkGLProc_glProgramLocalParameter4dARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramLocalParameter4dvARB"
+              c:type="GdkGLProc_glProgramLocalParameter4dvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramLocalParameter4fARB"
+              c:type="GdkGLProc_glProgramLocalParameter4fARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramLocalParameter4fvARB"
+              c:type="GdkGLProc_glProgramLocalParameter4fvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramNamedParameter4dNV"
+              c:type="GdkGLProc_glProgramNamedParameter4dNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramNamedParameter4dvNV"
+              c:type="GdkGLProc_glProgramNamedParameter4dvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramNamedParameter4fNV"
+              c:type="GdkGLProc_glProgramNamedParameter4fNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramNamedParameter4fvNV"
+              c:type="GdkGLProc_glProgramNamedParameter4fvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramParameter4dNV"
+              c:type="GdkGLProc_glProgramParameter4dNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramParameter4dvNV"
+              c:type="GdkGLProc_glProgramParameter4dvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramParameter4fNV"
+              c:type="GdkGLProc_glProgramParameter4fNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramParameter4fvNV"
+              c:type="GdkGLProc_glProgramParameter4fvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramParameters4dvNV"
+              c:type="GdkGLProc_glProgramParameters4dvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramParameters4fvNV"
+              c:type="GdkGLProc_glProgramParameters4fvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glProgramStringARB"
+              c:type="GdkGLProc_glProgramStringARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReadBufferRegion"
+              c:type="GdkGLProc_glReadBufferRegion">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="region" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReadInstrumentsSGIX"
+              c:type="GdkGLProc_glReadInstrumentsSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="marker" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReferencePlaneSGIX"
+              c:type="GdkGLProc_glReferencePlaneSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="equation" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodePointerSUN"
+              c:type="GdkGLProc_glReplacementCodePointerSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeubSUN"
+              c:type="GdkGLProc_glReplacementCodeubSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="code" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeubvSUN"
+              c:type="GdkGLProc_glReplacementCodeubvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="code" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeuiColor3fVertex3fSUN"
+              c:type="GdkGLProc_glReplacementCodeuiColor3fVertex3fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rc" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="g" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeuiColor3fVertex3fvSUN"
+              c:type="GdkGLProc_glReplacementCodeuiColor3fVertex3fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rc" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeuiColor4fNormal3fVertex3fSUN"
+              c:type="GdkGLProc_glReplacementCodeuiColor4fNormal3fVertex3fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rc" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="g" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="a" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeuiColor4fNormal3fVertex3fvSUN"
+              c:type="GdkGLProc_glReplacementCodeuiColor4fNormal3fVertex3fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rc" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeuiColor4ubVertex3fSUN"
+              c:type="GdkGLProc_glReplacementCodeuiColor4ubVertex3fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rc" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="g" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="a" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeuiColor4ubVertex3fvSUN"
+              c:type="GdkGLProc_glReplacementCodeuiColor4ubVertex3fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rc" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeuiNormal3fVertex3fSUN"
+              c:type="GdkGLProc_glReplacementCodeuiNormal3fVertex3fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rc" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeuiNormal3fVertex3fvSUN"
+              c:type="GdkGLProc_glReplacementCodeuiNormal3fVertex3fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rc" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeuiSUN"
+              c:type="GdkGLProc_glReplacementCodeuiSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="code" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"
+              c:type="GdkGLProc_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rc" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="g" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="a" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"
+              c:type="GdkGLProc_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rc" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+        <parameter name="tc" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"
+              c:type="GdkGLProc_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rc" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"
+              c:type="GdkGLProc_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rc" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+        <parameter name="tc" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeuiTexCoord2fVertex3fSUN"
+              c:type="GdkGLProc_glReplacementCodeuiTexCoord2fVertex3fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rc" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeuiTexCoord2fVertex3fvSUN"
+              c:type="GdkGLProc_glReplacementCodeuiTexCoord2fVertex3fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rc" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+        <parameter name="tc" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeuiVertex3fSUN"
+              c:type="GdkGLProc_glReplacementCodeuiVertex3fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rc" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeuiVertex3fvSUN"
+              c:type="GdkGLProc_glReplacementCodeuiVertex3fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rc" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeuivSUN"
+              c:type="GdkGLProc_glReplacementCodeuivSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="code" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeusSUN"
+              c:type="GdkGLProc_glReplacementCodeusSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="code" transfer-ownership="none">
+          <type name="GLushort" c:type="GLushort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glReplacementCodeusvSUN"
+              c:type="GdkGLProc_glReplacementCodeusvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="code" transfer-ownership="none">
+          <type name="GLushort" c:type="GLushort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glRequestResidentProgramsNV"
+              c:type="GdkGLProc_glRequestResidentProgramsNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="programs" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glResetHistogram"
+              c:type="GdkGLProc_glResetHistogram">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glResetHistogramEXT"
+              c:type="GdkGLProc_glResetHistogramEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glResetMinmax" c:type="GdkGLProc_glResetMinmax">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glResetMinmaxEXT"
+              c:type="GdkGLProc_glResetMinmaxEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glResizeBuffersMESA"
+              c:type="GdkGLProc_glResizeBuffersMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="GdkGLProc_glSampleCoverage"
+              c:type="GdkGLProc_glSampleCoverage">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLclampf" c:type="GLclampf"/>
+        </parameter>
+        <parameter name="invert" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSampleCoverageARB"
+              c:type="GdkGLProc_glSampleCoverageARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLclampf" c:type="GLclampf"/>
+        </parameter>
+        <parameter name="invert" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSampleMapATI"
+              c:type="GdkGLProc_glSampleMapATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dst" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="interp" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="swizzle" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSampleMaskEXT"
+              c:type="GdkGLProc_glSampleMaskEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLclampf" c:type="GLclampf"/>
+        </parameter>
+        <parameter name="invert" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSampleMaskSGIS"
+              c:type="GdkGLProc_glSampleMaskSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLclampf" c:type="GLclampf"/>
+        </parameter>
+        <parameter name="invert" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSamplePatternEXT"
+              c:type="GdkGLProc_glSamplePatternEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pattern" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSamplePatternSGIS"
+              c:type="GdkGLProc_glSamplePatternSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pattern" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3b"
+              c:type="GdkGLProc_glSecondaryColor3b">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3bEXT"
+              c:type="GdkGLProc_glSecondaryColor3bEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3bv"
+              c:type="GdkGLProc_glSecondaryColor3bv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3bvEXT"
+              c:type="GdkGLProc_glSecondaryColor3bvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3d"
+              c:type="GdkGLProc_glSecondaryColor3d">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3dEXT"
+              c:type="GdkGLProc_glSecondaryColor3dEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3dv"
+              c:type="GdkGLProc_glSecondaryColor3dv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3dvEXT"
+              c:type="GdkGLProc_glSecondaryColor3dvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3f"
+              c:type="GdkGLProc_glSecondaryColor3f">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3fEXT"
+              c:type="GdkGLProc_glSecondaryColor3fEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3fv"
+              c:type="GdkGLProc_glSecondaryColor3fv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3fvEXT"
+              c:type="GdkGLProc_glSecondaryColor3fvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3hNV"
+              c:type="GdkGLProc_glSecondaryColor3hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3hvNV"
+              c:type="GdkGLProc_glSecondaryColor3hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3i"
+              c:type="GdkGLProc_glSecondaryColor3i">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3iEXT"
+              c:type="GdkGLProc_glSecondaryColor3iEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3iv"
+              c:type="GdkGLProc_glSecondaryColor3iv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3ivEXT"
+              c:type="GdkGLProc_glSecondaryColor3ivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3s"
+              c:type="GdkGLProc_glSecondaryColor3s">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3sEXT"
+              c:type="GdkGLProc_glSecondaryColor3sEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3sv"
+              c:type="GdkGLProc_glSecondaryColor3sv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3svEXT"
+              c:type="GdkGLProc_glSecondaryColor3svEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3ub"
+              c:type="GdkGLProc_glSecondaryColor3ub">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3ubEXT"
+              c:type="GdkGLProc_glSecondaryColor3ubEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3ubv"
+              c:type="GdkGLProc_glSecondaryColor3ubv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3ubvEXT"
+              c:type="GdkGLProc_glSecondaryColor3ubvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3ui"
+              c:type="GdkGLProc_glSecondaryColor3ui">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3uiEXT"
+              c:type="GdkGLProc_glSecondaryColor3uiEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3uiv"
+              c:type="GdkGLProc_glSecondaryColor3uiv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3uivEXT"
+              c:type="GdkGLProc_glSecondaryColor3uivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3us"
+              c:type="GdkGLProc_glSecondaryColor3us">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLushort" c:type="GLushort"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLushort" c:type="GLushort"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLushort" c:type="GLushort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3usEXT"
+              c:type="GdkGLProc_glSecondaryColor3usEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLushort" c:type="GLushort"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLushort" c:type="GLushort"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLushort" c:type="GLushort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3usv"
+              c:type="GdkGLProc_glSecondaryColor3usv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLushort" c:type="GLushort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColor3usvEXT"
+              c:type="GdkGLProc_glSecondaryColor3usvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLushort" c:type="GLushort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColorPointer"
+              c:type="GdkGLProc_glSecondaryColorPointer">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColorPointerEXT"
+              c:type="GdkGLProc_glSecondaryColorPointerEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSecondaryColorPointerListIBM"
+              c:type="GdkGLProc_glSecondaryColorPointerListIBM">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+        <parameter name="ptrstride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSelectTextureCoordSetEXT"
+              c:type="GdkGLProc_glSelectTextureCoordSetEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSelectTextureCoordSetSGIS"
+              c:type="GdkGLProc_glSelectTextureCoordSetSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSelectTextureEXT"
+              c:type="GdkGLProc_glSelectTextureEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSelectTextureSGIS"
+              c:type="GdkGLProc_glSelectTextureSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSelectTextureTransformEXT"
+              c:type="GdkGLProc_glSelectTextureTransformEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSeparableFilter2D"
+              c:type="GdkGLProc_glSeparableFilter2D">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="row" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+        <parameter name="column" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSeparableFilter2DEXT"
+              c:type="GdkGLProc_glSeparableFilter2DEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="row" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+        <parameter name="column" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSetFenceAPPLE"
+              c:type="GdkGLProc_glSetFenceAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="fence" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSetFenceNV" c:type="GdkGLProc_glSetFenceNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="fence" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="condition" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSetFragmentShaderConstantATI"
+              c:type="GdkGLProc_glSetFragmentShaderConstantATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dst" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSetInvariantEXT"
+              c:type="GdkGLProc_glSetInvariantEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="addr" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSetLocalConstantEXT"
+              c:type="GdkGLProc_glSetLocalConstantEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="addr" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glShaderOp1EXT"
+              c:type="GdkGLProc_glShaderOp1EXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="op" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="res" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glShaderOp2EXT"
+              c:type="GdkGLProc_glShaderOp2EXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="op" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="res" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg2" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glShaderOp3EXT"
+              c:type="GdkGLProc_glShaderOp3EXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="op" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="res" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg1" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg2" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="arg3" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSharpenTexFuncSGIS"
+              c:type="GdkGLProc_glSharpenTexFuncSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="points" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSpriteParameterfSGIX"
+              c:type="GdkGLProc_glSpriteParameterfSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSpriteParameterfvSGIX"
+              c:type="GdkGLProc_glSpriteParameterfvSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSpriteParameteriSGIX"
+              c:type="GdkGLProc_glSpriteParameteriSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSpriteParameterivSGIX"
+              c:type="GdkGLProc_glSpriteParameterivSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="params" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glStartInstrumentsSGIX"
+              c:type="GdkGLProc_glStartInstrumentsSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="GdkGLProc_glStencilFuncSeparateATI"
+              c:type="GdkGLProc_glStencilFuncSeparateATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="frontfunc" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="backfunc" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="ref" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="mask" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glStencilOpSeparateATI"
+              c:type="GdkGLProc_glStencilOpSeparateATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="sfail" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="dpfail" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="dppass" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glStopInstrumentsSGIX"
+              c:type="GdkGLProc_glStopInstrumentsSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="marker" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glSwizzleEXT" c:type="GdkGLProc_glSwizzleEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="res" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="in" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="outX" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="outY" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="outZ" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="outW" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTagSampleBufferSGIX"
+              c:type="GdkGLProc_glTagSampleBufferSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="GdkGLProc_glTangent3bEXT"
+              c:type="GdkGLProc_glTangent3bEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tx" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+        <parameter name="ty" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+        <parameter name="tz" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTangent3bvEXT"
+              c:type="GdkGLProc_glTangent3bvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTangent3dEXT"
+              c:type="GdkGLProc_glTangent3dEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tx" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="ty" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="tz" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTangent3dvEXT"
+              c:type="GdkGLProc_glTangent3dvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTangent3fEXT"
+              c:type="GdkGLProc_glTangent3fEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tx" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="ty" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="tz" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTangent3fvEXT"
+              c:type="GdkGLProc_glTangent3fvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTangent3iEXT"
+              c:type="GdkGLProc_glTangent3iEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tx" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="ty" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="tz" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTangent3ivEXT"
+              c:type="GdkGLProc_glTangent3ivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTangent3sEXT"
+              c:type="GdkGLProc_glTangent3sEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tx" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="ty" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="tz" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTangent3svEXT"
+              c:type="GdkGLProc_glTangent3svEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTangentPointerEXT"
+              c:type="GdkGLProc_glTangentPointerEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTbufferMask3DFX"
+              c:type="GdkGLProc_glTbufferMask3DFX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mask" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTestFenceAPPLE"
+              c:type="GdkGLProc_glTestFenceAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="fence" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTestFenceNV" c:type="GdkGLProc_glTestFenceNV">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="fence" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTestObjectAPPLE"
+              c:type="GdkGLProc_glTestObjectAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexBumpParameterfvATI"
+              c:type="GdkGLProc_glTexBumpParameterfvATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexBumpParameterivATI"
+              c:type="GdkGLProc_glTexBumpParameterivATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord1hNV"
+              c:type="GdkGLProc_glTexCoord1hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord1hvNV"
+              c:type="GdkGLProc_glTexCoord1hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord2fColor3fVertex3fSUN"
+              c:type="GdkGLProc_glTexCoord2fColor3fVertex3fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="g" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord2fColor3fVertex3fvSUN"
+              c:type="GdkGLProc_glTexCoord2fColor3fVertex3fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tc" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord2fColor4fNormal3fVertex3fSUN"
+              c:type="GdkGLProc_glTexCoord2fColor4fNormal3fVertex3fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="g" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="a" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord2fColor4fNormal3fVertex3fvSUN"
+              c:type="GdkGLProc_glTexCoord2fColor4fNormal3fVertex3fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tc" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord2fColor4ubVertex3fSUN"
+              c:type="GdkGLProc_glTexCoord2fColor4ubVertex3fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="g" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="a" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord2fColor4ubVertex3fvSUN"
+              c:type="GdkGLProc_glTexCoord2fColor4ubVertex3fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tc" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord2fNormal3fVertex3fSUN"
+              c:type="GdkGLProc_glTexCoord2fNormal3fVertex3fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord2fNormal3fVertex3fvSUN"
+              c:type="GdkGLProc_glTexCoord2fNormal3fVertex3fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tc" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord2fVertex3fSUN"
+              c:type="GdkGLProc_glTexCoord2fVertex3fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord2fVertex3fvSUN"
+              c:type="GdkGLProc_glTexCoord2fVertex3fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tc" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord2hNV"
+              c:type="GdkGLProc_glTexCoord2hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord2hvNV"
+              c:type="GdkGLProc_glTexCoord2hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord3hNV"
+              c:type="GdkGLProc_glTexCoord3hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord3hvNV"
+              c:type="GdkGLProc_glTexCoord3hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord4fColor4fNormal3fVertex4fSUN"
+              c:type="GdkGLProc_glTexCoord4fColor4fNormal3fVertex4fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="p" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="g" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="a" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="nx" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="ny" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="nz" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord4fColor4fNormal3fVertex4fvSUN"
+              c:type="GdkGLProc_glTexCoord4fColor4fNormal3fVertex4fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tc" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord4fVertex4fSUN"
+              c:type="GdkGLProc_glTexCoord4fVertex4fSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="p" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord4fVertex4fvSUN"
+              c:type="GdkGLProc_glTexCoord4fVertex4fvSUN">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tc" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord4hNV"
+              c:type="GdkGLProc_glTexCoord4hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="s" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="t" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="r" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="q" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoord4hvNV"
+              c:type="GdkGLProc_glTexCoord4hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoordPointerEXT"
+              c:type="GdkGLProc_glTexCoordPointerEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoordPointerListIBM"
+              c:type="GdkGLProc_glTexCoordPointerListIBM">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+        <parameter name="ptrstride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexCoordPointervINTEL"
+              c:type="GdkGLProc_glTexCoordPointervINTEL">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexFilterFuncSGIS"
+              c:type="GdkGLProc_glTexFilterFuncSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="filter" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="weights" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexImage3D" c:type="GdkGLProc_glTexImage3D">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="depth" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="border" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pixels" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexImage3DEXT"
+              c:type="GdkGLProc_glTexImage3DEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="depth" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="border" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pixels" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexImage4DSGIS"
+              c:type="GdkGLProc_glTexImage4DSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="internalformat" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="depth" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="size4d" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="border" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pixels" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexSubImage1DEXT"
+              c:type="GdkGLProc_glTexSubImage1DEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="xoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pixels" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexSubImage2DEXT"
+              c:type="GdkGLProc_glTexSubImage2DEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="xoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="yoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pixels" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexSubImage3D"
+              c:type="GdkGLProc_glTexSubImage3D">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="xoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="yoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="zoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="depth" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pixels" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexSubImage3DEXT"
+              c:type="GdkGLProc_glTexSubImage3DEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="xoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="yoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="zoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="depth" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pixels" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTexSubImage4DSGIS"
+              c:type="GdkGLProc_glTexSubImage4DSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="xoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="yoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="zoffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="woffset" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="depth" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="size4d" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pixels" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTextureColorMaskSGIS"
+              c:type="GdkGLProc_glTextureColorMaskSGIS">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+        <parameter name="alpha" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTextureFogSGIX"
+              c:type="GdkGLProc_glTextureFogSGIX">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTextureLightEXT"
+              c:type="GdkGLProc_glTextureLightEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTextureMaterialEXT"
+              c:type="GdkGLProc_glTextureMaterialEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="face" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTextureNormalEXT"
+              c:type="GdkGLProc_glTextureNormalEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTextureRangeAPPLE"
+              c:type="GdkGLProc_glTextureRangeAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glTrackMatrixNV"
+              c:type="GdkGLProc_glTrackMatrixNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="address" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="matrix" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="transform" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glUnlockArraysEXT"
+              c:type="GdkGLProc_glUnlockArraysEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="GdkGLProc_glUnmapBufferARB"
+              c:type="GdkGLProc_glUnmapBufferARB">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="target" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glUnmapObjectBufferATI"
+              c:type="GdkGLProc_glUnmapObjectBufferATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glUpdateObjectBufferATI"
+              c:type="GdkGLProc_glUpdateObjectBufferATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+        <parameter name="preserve" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glValidBackBufferHint"
+              c:type="GdkGLProc_glValidBackBufferHint">
+      <return-value transfer-ownership="full">
+        <type name="GLboolean" c:type="GLboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="width" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVariantArrayObjectATI"
+              c:type="GdkGLProc_glVariantArrayObjectATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVariantPointerEXT"
+              c:type="GdkGLProc_glVariantPointerEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="addr" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVariantbvEXT"
+              c:type="GdkGLProc_glVariantbvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="addr" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVariantdvEXT"
+              c:type="GdkGLProc_glVariantdvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="addr" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVariantfvEXT"
+              c:type="GdkGLProc_glVariantfvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="addr" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVariantivEXT"
+              c:type="GdkGLProc_glVariantivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="addr" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVariantsvEXT"
+              c:type="GdkGLProc_glVariantsvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="addr" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVariantubvEXT"
+              c:type="GdkGLProc_glVariantubvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="addr" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVariantuivEXT"
+              c:type="GdkGLProc_glVariantuivEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="addr" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVariantusvEXT"
+              c:type="GdkGLProc_glVariantusvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="id" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="addr" transfer-ownership="none">
+          <type name="GLushort" c:type="GLushort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertex2hNV" c:type="GdkGLProc_glVertex2hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertex2hvNV" c:type="GdkGLProc_glVertex2hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertex3hNV" c:type="GdkGLProc_glVertex3hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertex3hvNV" c:type="GdkGLProc_glVertex3hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertex4hNV" c:type="GdkGLProc_glVertex4hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertex4hvNV" c:type="GdkGLProc_glVertex4hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexArrayParameteriAPPLE"
+              c:type="GdkGLProc_glVertexArrayParameteriAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexArrayRangeAPPLE"
+              c:type="GdkGLProc_glVertexArrayRangeAPPLE">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="length" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexArrayRangeNV"
+              c:type="GdkGLProc_glVertexArrayRangeNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="length" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib1dARB"
+              c:type="GdkGLProc_glVertexAttrib1dARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib1dNV"
+              c:type="GdkGLProc_glVertexAttrib1dNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib1dvARB"
+              c:type="GdkGLProc_glVertexAttrib1dvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib1dvNV"
+              c:type="GdkGLProc_glVertexAttrib1dvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib1fARB"
+              c:type="GdkGLProc_glVertexAttrib1fARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib1fNV"
+              c:type="GdkGLProc_glVertexAttrib1fNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib1fvARB"
+              c:type="GdkGLProc_glVertexAttrib1fvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib1fvNV"
+              c:type="GdkGLProc_glVertexAttrib1fvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib1hNV"
+              c:type="GdkGLProc_glVertexAttrib1hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib1hvNV"
+              c:type="GdkGLProc_glVertexAttrib1hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib1sARB"
+              c:type="GdkGLProc_glVertexAttrib1sARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib1sNV"
+              c:type="GdkGLProc_glVertexAttrib1sNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib1svARB"
+              c:type="GdkGLProc_glVertexAttrib1svARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib1svNV"
+              c:type="GdkGLProc_glVertexAttrib1svNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib2dARB"
+              c:type="GdkGLProc_glVertexAttrib2dARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib2dNV"
+              c:type="GdkGLProc_glVertexAttrib2dNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib2dvARB"
+              c:type="GdkGLProc_glVertexAttrib2dvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib2dvNV"
+              c:type="GdkGLProc_glVertexAttrib2dvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib2fARB"
+              c:type="GdkGLProc_glVertexAttrib2fARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib2fNV"
+              c:type="GdkGLProc_glVertexAttrib2fNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib2fvARB"
+              c:type="GdkGLProc_glVertexAttrib2fvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib2fvNV"
+              c:type="GdkGLProc_glVertexAttrib2fvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib2hNV"
+              c:type="GdkGLProc_glVertexAttrib2hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib2hvNV"
+              c:type="GdkGLProc_glVertexAttrib2hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib2sARB"
+              c:type="GdkGLProc_glVertexAttrib2sARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib2sNV"
+              c:type="GdkGLProc_glVertexAttrib2sNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib2svARB"
+              c:type="GdkGLProc_glVertexAttrib2svARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib2svNV"
+              c:type="GdkGLProc_glVertexAttrib2svNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib3dARB"
+              c:type="GdkGLProc_glVertexAttrib3dARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib3dNV"
+              c:type="GdkGLProc_glVertexAttrib3dNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib3dvARB"
+              c:type="GdkGLProc_glVertexAttrib3dvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib3dvNV"
+              c:type="GdkGLProc_glVertexAttrib3dvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib3fARB"
+              c:type="GdkGLProc_glVertexAttrib3fARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib3fNV"
+              c:type="GdkGLProc_glVertexAttrib3fNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib3fvARB"
+              c:type="GdkGLProc_glVertexAttrib3fvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib3fvNV"
+              c:type="GdkGLProc_glVertexAttrib3fvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib3hNV"
+              c:type="GdkGLProc_glVertexAttrib3hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib3hvNV"
+              c:type="GdkGLProc_glVertexAttrib3hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib3sARB"
+              c:type="GdkGLProc_glVertexAttrib3sARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib3sNV"
+              c:type="GdkGLProc_glVertexAttrib3sNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib3svARB"
+              c:type="GdkGLProc_glVertexAttrib3svARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib3svNV"
+              c:type="GdkGLProc_glVertexAttrib3svNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4NbvARB"
+              c:type="GdkGLProc_glVertexAttrib4NbvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4NivARB"
+              c:type="GdkGLProc_glVertexAttrib4NivARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4NsvARB"
+              c:type="GdkGLProc_glVertexAttrib4NsvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4NubARB"
+              c:type="GdkGLProc_glVertexAttrib4NubARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4NubvARB"
+              c:type="GdkGLProc_glVertexAttrib4NubvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4NuivARB"
+              c:type="GdkGLProc_glVertexAttrib4NuivARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4NusvARB"
+              c:type="GdkGLProc_glVertexAttrib4NusvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLushort" c:type="GLushort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4bvARB"
+              c:type="GdkGLProc_glVertexAttrib4bvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4dARB"
+              c:type="GdkGLProc_glVertexAttrib4dARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4dNV"
+              c:type="GdkGLProc_glVertexAttrib4dNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4dvARB"
+              c:type="GdkGLProc_glVertexAttrib4dvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4dvNV"
+              c:type="GdkGLProc_glVertexAttrib4dvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4fARB"
+              c:type="GdkGLProc_glVertexAttrib4fARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4fNV"
+              c:type="GdkGLProc_glVertexAttrib4fNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4fvARB"
+              c:type="GdkGLProc_glVertexAttrib4fvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4fvNV"
+              c:type="GdkGLProc_glVertexAttrib4fvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4hNV"
+              c:type="GdkGLProc_glVertexAttrib4hNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4hvNV"
+              c:type="GdkGLProc_glVertexAttrib4hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4ivARB"
+              c:type="GdkGLProc_glVertexAttrib4ivARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4sARB"
+              c:type="GdkGLProc_glVertexAttrib4sARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4sNV"
+              c:type="GdkGLProc_glVertexAttrib4sNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4svARB"
+              c:type="GdkGLProc_glVertexAttrib4svARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4svNV"
+              c:type="GdkGLProc_glVertexAttrib4svNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4ubNV"
+              c:type="GdkGLProc_glVertexAttrib4ubNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4ubvARB"
+              c:type="GdkGLProc_glVertexAttrib4ubvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4ubvNV"
+              c:type="GdkGLProc_glVertexAttrib4ubvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4uivARB"
+              c:type="GdkGLProc_glVertexAttrib4uivARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttrib4usvARB"
+              c:type="GdkGLProc_glVertexAttrib4usvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLushort" c:type="GLushort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribArrayObjectATI"
+              c:type="GdkGLProc_glVertexAttribArrayObjectATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="normalized" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribPointerARB"
+              c:type="GdkGLProc_glVertexAttribPointerARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="normalized" transfer-ownership="none">
+          <type name="GLboolean" c:type="GLboolean"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribPointerNV"
+              c:type="GdkGLProc_glVertexAttribPointerNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="fsize" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribs1dvNV"
+              c:type="GdkGLProc_glVertexAttribs1dvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribs1fvNV"
+              c:type="GdkGLProc_glVertexAttribs1fvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribs1hvNV"
+              c:type="GdkGLProc_glVertexAttribs1hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribs1svNV"
+              c:type="GdkGLProc_glVertexAttribs1svNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribs2dvNV"
+              c:type="GdkGLProc_glVertexAttribs2dvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribs2fvNV"
+              c:type="GdkGLProc_glVertexAttribs2fvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribs2hvNV"
+              c:type="GdkGLProc_glVertexAttribs2hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribs2svNV"
+              c:type="GdkGLProc_glVertexAttribs2svNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribs3dvNV"
+              c:type="GdkGLProc_glVertexAttribs3dvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribs3fvNV"
+              c:type="GdkGLProc_glVertexAttribs3fvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribs3hvNV"
+              c:type="GdkGLProc_glVertexAttribs3hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribs3svNV"
+              c:type="GdkGLProc_glVertexAttribs3svNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribs4dvNV"
+              c:type="GdkGLProc_glVertexAttribs4dvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribs4fvNV"
+              c:type="GdkGLProc_glVertexAttribs4fvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribs4hvNV"
+              c:type="GdkGLProc_glVertexAttribs4hvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribs4svNV"
+              c:type="GdkGLProc_glVertexAttribs4svNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexAttribs4ubvNV"
+              c:type="GdkGLProc_glVertexAttribs4ubvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="index" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexBlendARB"
+              c:type="GdkGLProc_glVertexBlendARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexBlendEnvfATI"
+              c:type="GdkGLProc_glVertexBlendEnvfATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexBlendEnviATI"
+              c:type="GdkGLProc_glVertexBlendEnviATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pname" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="param" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexPointerEXT"
+              c:type="GdkGLProc_glVertexPointerEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexPointerListIBM"
+              c:type="GdkGLProc_glVertexPointerListIBM">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+        <parameter name="ptrstride" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexPointervINTEL"
+              c:type="GdkGLProc_glVertexPointervINTEL">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid**"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream1dATI"
+              c:type="GdkGLProc_glVertexStream1dATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream1dvATI"
+              c:type="GdkGLProc_glVertexStream1dvATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream1fATI"
+              c:type="GdkGLProc_glVertexStream1fATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream1fvATI"
+              c:type="GdkGLProc_glVertexStream1fvATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream1iATI"
+              c:type="GdkGLProc_glVertexStream1iATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream1ivATI"
+              c:type="GdkGLProc_glVertexStream1ivATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream1sATI"
+              c:type="GdkGLProc_glVertexStream1sATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream1svATI"
+              c:type="GdkGLProc_glVertexStream1svATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream2dATI"
+              c:type="GdkGLProc_glVertexStream2dATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream2dvATI"
+              c:type="GdkGLProc_glVertexStream2dvATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream2fATI"
+              c:type="GdkGLProc_glVertexStream2fATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream2fvATI"
+              c:type="GdkGLProc_glVertexStream2fvATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream2iATI"
+              c:type="GdkGLProc_glVertexStream2iATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream2ivATI"
+              c:type="GdkGLProc_glVertexStream2ivATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream2sATI"
+              c:type="GdkGLProc_glVertexStream2sATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream2svATI"
+              c:type="GdkGLProc_glVertexStream2svATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream3dATI"
+              c:type="GdkGLProc_glVertexStream3dATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream3dvATI"
+              c:type="GdkGLProc_glVertexStream3dvATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream3fATI"
+              c:type="GdkGLProc_glVertexStream3fATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream3fvATI"
+              c:type="GdkGLProc_glVertexStream3fvATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream3iATI"
+              c:type="GdkGLProc_glVertexStream3iATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream3ivATI"
+              c:type="GdkGLProc_glVertexStream3ivATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream3sATI"
+              c:type="GdkGLProc_glVertexStream3sATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream3svATI"
+              c:type="GdkGLProc_glVertexStream3svATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream4dATI"
+              c:type="GdkGLProc_glVertexStream4dATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream4dvATI"
+              c:type="GdkGLProc_glVertexStream4dvATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream4fATI"
+              c:type="GdkGLProc_glVertexStream4fATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream4fvATI"
+              c:type="GdkGLProc_glVertexStream4fvATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream4iATI"
+              c:type="GdkGLProc_glVertexStream4iATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream4ivATI"
+              c:type="GdkGLProc_glVertexStream4ivATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream4sATI"
+              c:type="GdkGLProc_glVertexStream4sATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexStream4svATI"
+              c:type="GdkGLProc_glVertexStream4svATI">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="stream" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="coords" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexWeightPointerEXT"
+              c:type="GdkGLProc_glVertexWeightPointerEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexWeightfEXT"
+              c:type="GdkGLProc_glVertexWeightfEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="weight" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexWeightfvEXT"
+              c:type="GdkGLProc_glVertexWeightfvEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="weight" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexWeighthNV"
+              c:type="GdkGLProc_glVertexWeighthNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="weight" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glVertexWeighthvNV"
+              c:type="GdkGLProc_glVertexWeighthvNV">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="weight" transfer-ownership="none">
+          <type name="GLhalfNV" c:type="GLhalfNV*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWeightPointerARB"
+              c:type="GdkGLProc_glWeightPointerARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="stride" transfer-ownership="none">
+          <type name="GLsizei" c:type="GLsizei"/>
+        </parameter>
+        <parameter name="pointer" transfer-ownership="none">
+          <type name="GLvoid" c:type="GLvoid*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWeightbvARB" c:type="GdkGLProc_glWeightbvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="weights" transfer-ownership="none">
+          <type name="GLbyte" c:type="GLbyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWeightdvARB" c:type="GdkGLProc_glWeightdvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="weights" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWeightfvARB" c:type="GdkGLProc_glWeightfvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="weights" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWeightivARB" c:type="GdkGLProc_glWeightivARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="weights" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWeightsvARB" c:type="GdkGLProc_glWeightsvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="weights" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWeightubvARB"
+              c:type="GdkGLProc_glWeightubvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="weights" transfer-ownership="none">
+          <type name="GLubyte" c:type="GLubyte*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWeightuivARB"
+              c:type="GdkGLProc_glWeightuivARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="weights" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWeightusvARB"
+              c:type="GdkGLProc_glWeightusvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="weights" transfer-ownership="none">
+          <type name="GLushort" c:type="GLushort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowBackBufferHint"
+              c:type="GdkGLProc_glWindowBackBufferHint">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2d" c:type="GdkGLProc_glWindowPos2d">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2dARB"
+              c:type="GdkGLProc_glWindowPos2dARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2dMESA"
+              c:type="GdkGLProc_glWindowPos2dMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2dv"
+              c:type="GdkGLProc_glWindowPos2dv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2dvARB"
+              c:type="GdkGLProc_glWindowPos2dvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2dvMESA"
+              c:type="GdkGLProc_glWindowPos2dvMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2f" c:type="GdkGLProc_glWindowPos2f">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2fARB"
+              c:type="GdkGLProc_glWindowPos2fARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2fMESA"
+              c:type="GdkGLProc_glWindowPos2fMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2fv"
+              c:type="GdkGLProc_glWindowPos2fv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2fvARB"
+              c:type="GdkGLProc_glWindowPos2fvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2fvMESA"
+              c:type="GdkGLProc_glWindowPos2fvMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2i" c:type="GdkGLProc_glWindowPos2i">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2iARB"
+              c:type="GdkGLProc_glWindowPos2iARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2iMESA"
+              c:type="GdkGLProc_glWindowPos2iMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2iv"
+              c:type="GdkGLProc_glWindowPos2iv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2ivARB"
+              c:type="GdkGLProc_glWindowPos2ivARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2ivMESA"
+              c:type="GdkGLProc_glWindowPos2ivMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2s" c:type="GdkGLProc_glWindowPos2s">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2sARB"
+              c:type="GdkGLProc_glWindowPos2sARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2sMESA"
+              c:type="GdkGLProc_glWindowPos2sMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2sv"
+              c:type="GdkGLProc_glWindowPos2sv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2svARB"
+              c:type="GdkGLProc_glWindowPos2svARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos2svMESA"
+              c:type="GdkGLProc_glWindowPos2svMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3d" c:type="GdkGLProc_glWindowPos3d">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3dARB"
+              c:type="GdkGLProc_glWindowPos3dARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3dMESA"
+              c:type="GdkGLProc_glWindowPos3dMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3dv"
+              c:type="GdkGLProc_glWindowPos3dv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3dvARB"
+              c:type="GdkGLProc_glWindowPos3dvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3dvMESA"
+              c:type="GdkGLProc_glWindowPos3dvMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3f" c:type="GdkGLProc_glWindowPos3f">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3fARB"
+              c:type="GdkGLProc_glWindowPos3fARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3fMESA"
+              c:type="GdkGLProc_glWindowPos3fMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3fv"
+              c:type="GdkGLProc_glWindowPos3fv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3fvARB"
+              c:type="GdkGLProc_glWindowPos3fvARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3fvMESA"
+              c:type="GdkGLProc_glWindowPos3fvMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3i" c:type="GdkGLProc_glWindowPos3i">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3iARB"
+              c:type="GdkGLProc_glWindowPos3iARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3iMESA"
+              c:type="GdkGLProc_glWindowPos3iMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3iv"
+              c:type="GdkGLProc_glWindowPos3iv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3ivARB"
+              c:type="GdkGLProc_glWindowPos3ivARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3ivMESA"
+              c:type="GdkGLProc_glWindowPos3ivMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3s" c:type="GdkGLProc_glWindowPos3s">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3sARB"
+              c:type="GdkGLProc_glWindowPos3sARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3sMESA"
+              c:type="GdkGLProc_glWindowPos3sMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3sv"
+              c:type="GdkGLProc_glWindowPos3sv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3svARB"
+              c:type="GdkGLProc_glWindowPos3svARB">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos3svMESA"
+              c:type="GdkGLProc_glWindowPos3svMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos4dMESA"
+              c:type="GdkGLProc_glWindowPos4dMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos4dvMESA"
+              c:type="GdkGLProc_glWindowPos4dvMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLdouble" c:type="GLdouble*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos4fMESA"
+              c:type="GdkGLProc_glWindowPos4fMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos4fvMESA"
+              c:type="GdkGLProc_glWindowPos4fvMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLfloat" c:type="GLfloat*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos4iMESA"
+              c:type="GdkGLProc_glWindowPos4iMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLint" c:type="GLint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos4ivMESA"
+              c:type="GdkGLProc_glWindowPos4ivMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLint" c:type="GLint*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos4sMESA"
+              c:type="GdkGLProc_glWindowPos4sMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="x" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="z" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+        <parameter name="w" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWindowPos4svMESA"
+              c:type="GdkGLProc_glWindowPos4svMESA">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="GLshort" c:type="GLshort*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="GdkGLProc_glWriteMaskEXT"
+              c:type="GdkGLProc_glWriteMaskEXT">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="res" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="in" transfer-ownership="none">
+          <type name="GLuint" c:type="GLuint"/>
+        </parameter>
+        <parameter name="outX" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="outY" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="outZ" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+        <parameter name="outW" transfer-ownership="none">
+          <type name="GLenum" c:type="GLenum"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="WIN32_LEAN_AND_MEAN" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="func__" value="&lt;unknown&gt;">
+      <type name="utf8"/>
+    </constant>
+    <function name="gl_draw_cone" c:identifier="gdk_gl_draw_cone">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="solid" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="base" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+        <parameter name="height" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+        <parameter name="slices" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="stacks" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gl_draw_cube" c:identifier="gdk_gl_draw_cube">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="solid" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gl_draw_dodecahedron"
+              c:identifier="gdk_gl_draw_dodecahedron">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="solid" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gl_draw_icosahedron"
+              c:identifier="gdk_gl_draw_icosahedron">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="solid" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gl_draw_octahedron" c:identifier="gdk_gl_draw_octahedron">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="solid" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gl_draw_sphere" c:identifier="gdk_gl_draw_sphere">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="solid" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="radius" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+        <parameter name="slices" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="stacks" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gl_draw_teapot" c:identifier="gdk_gl_draw_teapot">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="solid" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="scale" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gl_draw_tetrahedron"
+              c:identifier="gdk_gl_draw_tetrahedron">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="solid" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gl_draw_torus" c:identifier="gdk_gl_draw_torus">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="solid" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="inner_radius" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+        <parameter name="outer_radius" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+        <parameter name="nsides" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="rings" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gl_drawable_get_current"
+              c:identifier="gdk_gl_drawable_get_current">
+      <return-value transfer-ownership="full">
+        <type name="GLDrawable" c:type="GdkGLDrawable*"/>
+      </return-value>
+    </function>
+    <function name="gl_font_use_pango_font"
+              c:identifier="gdk_gl_font_use_pango_font">
+      <return-value transfer-ownership="full">
+        <type name="Pango.Font" c:type="PangoFont*"/>
+      </return-value>
+      <parameters>
+        <parameter name="font_desc" transfer-ownership="none">
+          <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
+        </parameter>
+        <parameter name="first" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="list_base" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gl_get_GL_3DFX_tbuffer"
+              c:identifier="gdk_gl_get_GL_3DFX_tbuffer">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_3DFX_tbuffer" c:type="GdkGL_GL_3DFX_tbuffer*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_APPLE_element_array"
+              c:identifier="gdk_gl_get_GL_APPLE_element_array">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_APPLE_element_array"
+              c:type="GdkGL_GL_APPLE_element_array*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_APPLE_fence"
+              c:identifier="gdk_gl_get_GL_APPLE_fence">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_APPLE_fence" c:type="GdkGL_GL_APPLE_fence*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_APPLE_texture_range"
+              c:identifier="gdk_gl_get_GL_APPLE_texture_range">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_APPLE_texture_range"
+              c:type="GdkGL_GL_APPLE_texture_range*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_APPLE_vertex_array_object"
+              c:identifier="gdk_gl_get_GL_APPLE_vertex_array_object">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_APPLE_vertex_array_object"
+              c:type="GdkGL_GL_APPLE_vertex_array_object*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_APPLE_vertex_array_range"
+              c:identifier="gdk_gl_get_GL_APPLE_vertex_array_range">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_APPLE_vertex_array_range"
+              c:type="GdkGL_GL_APPLE_vertex_array_range*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_APPLE_vertex_program_evaluators"
+              c:identifier="gdk_gl_get_GL_APPLE_vertex_program_evaluators">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_APPLE_vertex_program_evaluators"
+              c:type="GdkGL_GL_APPLE_vertex_program_evaluators*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ARB_matrix_palette"
+              c:identifier="gdk_gl_get_GL_ARB_matrix_palette">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ARB_matrix_palette"
+              c:type="GdkGL_GL_ARB_matrix_palette*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ARB_multisample"
+              c:identifier="gdk_gl_get_GL_ARB_multisample">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ARB_multisample" c:type="GdkGL_GL_ARB_multisample*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ARB_multitexture"
+              c:identifier="gdk_gl_get_GL_ARB_multitexture">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ARB_multitexture"
+              c:type="GdkGL_GL_ARB_multitexture*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ARB_point_parameters"
+              c:identifier="gdk_gl_get_GL_ARB_point_parameters">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ARB_point_parameters"
+              c:type="GdkGL_GL_ARB_point_parameters*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ARB_texture_compression"
+              c:identifier="gdk_gl_get_GL_ARB_texture_compression">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ARB_texture_compression"
+              c:type="GdkGL_GL_ARB_texture_compression*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ARB_transpose_matrix"
+              c:identifier="gdk_gl_get_GL_ARB_transpose_matrix">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ARB_transpose_matrix"
+              c:type="GdkGL_GL_ARB_transpose_matrix*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ARB_vertex_blend"
+              c:identifier="gdk_gl_get_GL_ARB_vertex_blend">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ARB_vertex_blend"
+              c:type="GdkGL_GL_ARB_vertex_blend*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ARB_vertex_buffer_object"
+              c:identifier="gdk_gl_get_GL_ARB_vertex_buffer_object">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ARB_vertex_buffer_object"
+              c:type="GdkGL_GL_ARB_vertex_buffer_object*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ARB_vertex_program"
+              c:identifier="gdk_gl_get_GL_ARB_vertex_program">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ARB_vertex_program"
+              c:type="GdkGL_GL_ARB_vertex_program*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ARB_window_pos"
+              c:identifier="gdk_gl_get_GL_ARB_window_pos">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ARB_window_pos" c:type="GdkGL_GL_ARB_window_pos*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ATIX_pn_triangles"
+              c:identifier="gdk_gl_get_GL_ATIX_pn_triangles">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ATIX_pn_triangles"
+              c:type="GdkGL_GL_ATIX_pn_triangles*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ATI_blend_equation_separate"
+              c:identifier="gdk_gl_get_GL_ATI_blend_equation_separate">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ATI_blend_equation_separate"
+              c:type="GdkGL_GL_ATI_blend_equation_separate*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ATI_draw_buffers"
+              c:identifier="gdk_gl_get_GL_ATI_draw_buffers">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ATI_draw_buffers"
+              c:type="GdkGL_GL_ATI_draw_buffers*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ATI_element_array"
+              c:identifier="gdk_gl_get_GL_ATI_element_array">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ATI_element_array"
+              c:type="GdkGL_GL_ATI_element_array*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ATI_envmap_bumpmap"
+              c:identifier="gdk_gl_get_GL_ATI_envmap_bumpmap">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ATI_envmap_bumpmap"
+              c:type="GdkGL_GL_ATI_envmap_bumpmap*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ATI_fragment_shader"
+              c:identifier="gdk_gl_get_GL_ATI_fragment_shader">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ATI_fragment_shader"
+              c:type="GdkGL_GL_ATI_fragment_shader*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ATI_map_object_buffer"
+              c:identifier="gdk_gl_get_GL_ATI_map_object_buffer">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ATI_map_object_buffer"
+              c:type="GdkGL_GL_ATI_map_object_buffer*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ATI_pn_triangles"
+              c:identifier="gdk_gl_get_GL_ATI_pn_triangles">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ATI_pn_triangles"
+              c:type="GdkGL_GL_ATI_pn_triangles*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ATI_separate_stencil"
+              c:identifier="gdk_gl_get_GL_ATI_separate_stencil">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ATI_separate_stencil"
+              c:type="GdkGL_GL_ATI_separate_stencil*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ATI_vertex_array_object"
+              c:identifier="gdk_gl_get_GL_ATI_vertex_array_object">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ATI_vertex_array_object"
+              c:type="GdkGL_GL_ATI_vertex_array_object*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ATI_vertex_attrib_array_object"
+              c:identifier="gdk_gl_get_GL_ATI_vertex_attrib_array_object">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ATI_vertex_attrib_array_object"
+              c:type="GdkGL_GL_ATI_vertex_attrib_array_object*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_ATI_vertex_streams"
+              c:identifier="gdk_gl_get_GL_ATI_vertex_streams">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_ATI_vertex_streams"
+              c:type="GdkGL_GL_ATI_vertex_streams*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_Autodesk_facet_normal"
+              c:identifier="gdk_gl_get_GL_Autodesk_facet_normal">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_Autodesk_facet_normal"
+              c:type="GdkGL_GL_Autodesk_facet_normal*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_Autodesk_valid_back_buffer_hint"
+              c:identifier="gdk_gl_get_GL_Autodesk_valid_back_buffer_hint">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_Autodesk_valid_back_buffer_hint"
+              c:type="GdkGL_GL_Autodesk_valid_back_buffer_hint*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_blend_color"
+              c:identifier="gdk_gl_get_GL_EXT_blend_color">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_blend_color" c:type="GdkGL_GL_EXT_blend_color*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_blend_func_separate"
+              c:identifier="gdk_gl_get_GL_EXT_blend_func_separate">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_blend_func_separate"
+              c:type="GdkGL_GL_EXT_blend_func_separate*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_blend_minmax"
+              c:identifier="gdk_gl_get_GL_EXT_blend_minmax">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_blend_minmax"
+              c:type="GdkGL_GL_EXT_blend_minmax*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_color_subtable"
+              c:identifier="gdk_gl_get_GL_EXT_color_subtable">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_color_subtable"
+              c:type="GdkGL_GL_EXT_color_subtable*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_compiled_vertex_array"
+              c:identifier="gdk_gl_get_GL_EXT_compiled_vertex_array">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_compiled_vertex_array"
+              c:type="GdkGL_GL_EXT_compiled_vertex_array*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_convolution"
+              c:identifier="gdk_gl_get_GL_EXT_convolution">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_convolution" c:type="GdkGL_GL_EXT_convolution*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_coordinate_frame"
+              c:identifier="gdk_gl_get_GL_EXT_coordinate_frame">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_coordinate_frame"
+              c:type="GdkGL_GL_EXT_coordinate_frame*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_copy_texture"
+              c:identifier="gdk_gl_get_GL_EXT_copy_texture">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_copy_texture"
+              c:type="GdkGL_GL_EXT_copy_texture*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_cull_vertex"
+              c:identifier="gdk_gl_get_GL_EXT_cull_vertex">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_cull_vertex" c:type="GdkGL_GL_EXT_cull_vertex*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_depth_bounds_test"
+              c:identifier="gdk_gl_get_GL_EXT_depth_bounds_test">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_depth_bounds_test"
+              c:type="GdkGL_GL_EXT_depth_bounds_test*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_draw_range_elements"
+              c:identifier="gdk_gl_get_GL_EXT_draw_range_elements">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_draw_range_elements"
+              c:type="GdkGL_GL_EXT_draw_range_elements*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_fog_coord"
+              c:identifier="gdk_gl_get_GL_EXT_fog_coord">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_fog_coord" c:type="GdkGL_GL_EXT_fog_coord*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_fragment_lighting"
+              c:identifier="gdk_gl_get_GL_EXT_fragment_lighting">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_fragment_lighting"
+              c:type="GdkGL_GL_EXT_fragment_lighting*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_histogram"
+              c:identifier="gdk_gl_get_GL_EXT_histogram">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_histogram" c:type="GdkGL_GL_EXT_histogram*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_index_func"
+              c:identifier="gdk_gl_get_GL_EXT_index_func">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_index_func" c:type="GdkGL_GL_EXT_index_func*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_index_material"
+              c:identifier="gdk_gl_get_GL_EXT_index_material">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_index_material"
+              c:type="GdkGL_GL_EXT_index_material*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_light_texture"
+              c:identifier="gdk_gl_get_GL_EXT_light_texture">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_light_texture"
+              c:type="GdkGL_GL_EXT_light_texture*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_multi_draw_arrays"
+              c:identifier="gdk_gl_get_GL_EXT_multi_draw_arrays">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_multi_draw_arrays"
+              c:type="GdkGL_GL_EXT_multi_draw_arrays*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_multisample"
+              c:identifier="gdk_gl_get_GL_EXT_multisample">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_multisample" c:type="GdkGL_GL_EXT_multisample*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_multitexture"
+              c:identifier="gdk_gl_get_GL_EXT_multitexture">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_multitexture"
+              c:type="GdkGL_GL_EXT_multitexture*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_paletted_texture"
+              c:identifier="gdk_gl_get_GL_EXT_paletted_texture">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_paletted_texture"
+              c:type="GdkGL_GL_EXT_paletted_texture*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_pixel_transform"
+              c:identifier="gdk_gl_get_GL_EXT_pixel_transform">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_pixel_transform"
+              c:type="GdkGL_GL_EXT_pixel_transform*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_point_parameters"
+              c:identifier="gdk_gl_get_GL_EXT_point_parameters">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_point_parameters"
+              c:type="GdkGL_GL_EXT_point_parameters*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_polygon_offset"
+              c:identifier="gdk_gl_get_GL_EXT_polygon_offset">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_polygon_offset"
+              c:type="GdkGL_GL_EXT_polygon_offset*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_scene_marker"
+              c:identifier="gdk_gl_get_GL_EXT_scene_marker">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_scene_marker"
+              c:type="GdkGL_GL_EXT_scene_marker*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_secondary_color"
+              c:identifier="gdk_gl_get_GL_EXT_secondary_color">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_secondary_color"
+              c:type="GdkGL_GL_EXT_secondary_color*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_stencil_two_side"
+              c:identifier="gdk_gl_get_GL_EXT_stencil_two_side">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_stencil_two_side"
+              c:type="GdkGL_GL_EXT_stencil_two_side*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_subtexture"
+              c:identifier="gdk_gl_get_GL_EXT_subtexture">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_subtexture" c:type="GdkGL_GL_EXT_subtexture*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_texture3D"
+              c:identifier="gdk_gl_get_GL_EXT_texture3D">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_texture3D" c:type="GdkGL_GL_EXT_texture3D*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_texture_object"
+              c:identifier="gdk_gl_get_GL_EXT_texture_object">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_texture_object"
+              c:type="GdkGL_GL_EXT_texture_object*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_texture_perturb_normal"
+              c:identifier="gdk_gl_get_GL_EXT_texture_perturb_normal">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_texture_perturb_normal"
+              c:type="GdkGL_GL_EXT_texture_perturb_normal*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_vertex_array"
+              c:identifier="gdk_gl_get_GL_EXT_vertex_array">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_vertex_array"
+              c:type="GdkGL_GL_EXT_vertex_array*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_vertex_shader"
+              c:identifier="gdk_gl_get_GL_EXT_vertex_shader">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_vertex_shader"
+              c:type="GdkGL_GL_EXT_vertex_shader*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_EXT_vertex_weighting"
+              c:identifier="gdk_gl_get_GL_EXT_vertex_weighting">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_EXT_vertex_weighting"
+              c:type="GdkGL_GL_EXT_vertex_weighting*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_HP_image_transform"
+              c:identifier="gdk_gl_get_GL_HP_image_transform">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_HP_image_transform"
+              c:type="GdkGL_GL_HP_image_transform*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_IBM_multimode_draw_arrays"
+              c:identifier="gdk_gl_get_GL_IBM_multimode_draw_arrays">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_IBM_multimode_draw_arrays"
+              c:type="GdkGL_GL_IBM_multimode_draw_arrays*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_IBM_static_data"
+              c:identifier="gdk_gl_get_GL_IBM_static_data">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_IBM_static_data" c:type="GdkGL_GL_IBM_static_data*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_IBM_vertex_array_lists"
+              c:identifier="gdk_gl_get_GL_IBM_vertex_array_lists">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_IBM_vertex_array_lists"
+              c:type="GdkGL_GL_IBM_vertex_array_lists*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_INGR_blend_func_separate"
+              c:identifier="gdk_gl_get_GL_INGR_blend_func_separate">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_INGR_blend_func_separate"
+              c:type="GdkGL_GL_INGR_blend_func_separate*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_INTEL_parallel_arrays"
+              c:identifier="gdk_gl_get_GL_INTEL_parallel_arrays">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_INTEL_parallel_arrays"
+              c:type="GdkGL_GL_INTEL_parallel_arrays*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_KTX_buffer_region"
+              c:identifier="gdk_gl_get_GL_KTX_buffer_region">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_KTX_buffer_region"
+              c:type="GdkGL_GL_KTX_buffer_region*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_MESA_resize_buffers"
+              c:identifier="gdk_gl_get_GL_MESA_resize_buffers">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_MESA_resize_buffers"
+              c:type="GdkGL_GL_MESA_resize_buffers*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_MESA_window_pos"
+              c:identifier="gdk_gl_get_GL_MESA_window_pos">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_MESA_window_pos" c:type="GdkGL_GL_MESA_window_pos*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_NV_element_array"
+              c:identifier="gdk_gl_get_GL_NV_element_array">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_NV_element_array"
+              c:type="GdkGL_GL_NV_element_array*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_NV_evaluators"
+              c:identifier="gdk_gl_get_GL_NV_evaluators">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_NV_evaluators" c:type="GdkGL_GL_NV_evaluators*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_NV_fence" c:identifier="gdk_gl_get_GL_NV_fence">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_NV_fence" c:type="GdkGL_GL_NV_fence*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_NV_fragment_program"
+              c:identifier="gdk_gl_get_GL_NV_fragment_program">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_NV_fragment_program"
+              c:type="GdkGL_GL_NV_fragment_program*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_NV_half_float"
+              c:identifier="gdk_gl_get_GL_NV_half_float">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_NV_half_float" c:type="GdkGL_GL_NV_half_float*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_NV_occlusion_query"
+              c:identifier="gdk_gl_get_GL_NV_occlusion_query">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_NV_occlusion_query"
+              c:type="GdkGL_GL_NV_occlusion_query*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_NV_pixel_data_range"
+              c:identifier="gdk_gl_get_GL_NV_pixel_data_range">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_NV_pixel_data_range"
+              c:type="GdkGL_GL_NV_pixel_data_range*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_NV_point_sprite"
+              c:identifier="gdk_gl_get_GL_NV_point_sprite">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_NV_point_sprite" c:type="GdkGL_GL_NV_point_sprite*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_NV_primitive_restart"
+              c:identifier="gdk_gl_get_GL_NV_primitive_restart">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_NV_primitive_restart"
+              c:type="GdkGL_GL_NV_primitive_restart*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_NV_register_combiners"
+              c:identifier="gdk_gl_get_GL_NV_register_combiners">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_NV_register_combiners"
+              c:type="GdkGL_GL_NV_register_combiners*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_NV_register_combiners2"
+              c:identifier="gdk_gl_get_GL_NV_register_combiners2">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_NV_register_combiners2"
+              c:type="GdkGL_GL_NV_register_combiners2*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_NV_stencil_two_side"
+              c:identifier="gdk_gl_get_GL_NV_stencil_two_side">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_NV_stencil_two_side"
+              c:type="GdkGL_GL_NV_stencil_two_side*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_NV_vertex_array_range"
+              c:identifier="gdk_gl_get_GL_NV_vertex_array_range">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_NV_vertex_array_range"
+              c:type="GdkGL_GL_NV_vertex_array_range*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_NV_vertex_program"
+              c:identifier="gdk_gl_get_GL_NV_vertex_program">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_NV_vertex_program"
+              c:type="GdkGL_GL_NV_vertex_program*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_PGI_misc_hints"
+              c:identifier="gdk_gl_get_GL_PGI_misc_hints">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_PGI_misc_hints" c:type="GdkGL_GL_PGI_misc_hints*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIS_detail_texture"
+              c:identifier="gdk_gl_get_GL_SGIS_detail_texture">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIS_detail_texture"
+              c:type="GdkGL_GL_SGIS_detail_texture*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIS_fog_function"
+              c:identifier="gdk_gl_get_GL_SGIS_fog_function">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIS_fog_function"
+              c:type="GdkGL_GL_SGIS_fog_function*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIS_multisample"
+              c:identifier="gdk_gl_get_GL_SGIS_multisample">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIS_multisample"
+              c:type="GdkGL_GL_SGIS_multisample*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIS_multitexture"
+              c:identifier="gdk_gl_get_GL_SGIS_multitexture">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIS_multitexture"
+              c:type="GdkGL_GL_SGIS_multitexture*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIS_pixel_texture"
+              c:identifier="gdk_gl_get_GL_SGIS_pixel_texture">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIS_pixel_texture"
+              c:type="GdkGL_GL_SGIS_pixel_texture*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIS_point_parameters"
+              c:identifier="gdk_gl_get_GL_SGIS_point_parameters">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIS_point_parameters"
+              c:type="GdkGL_GL_SGIS_point_parameters*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIS_sharpen_texture"
+              c:identifier="gdk_gl_get_GL_SGIS_sharpen_texture">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIS_sharpen_texture"
+              c:type="GdkGL_GL_SGIS_sharpen_texture*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIS_texture4D"
+              c:identifier="gdk_gl_get_GL_SGIS_texture4D">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIS_texture4D" c:type="GdkGL_GL_SGIS_texture4D*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIS_texture_color_mask"
+              c:identifier="gdk_gl_get_GL_SGIS_texture_color_mask">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIS_texture_color_mask"
+              c:type="GdkGL_GL_SGIS_texture_color_mask*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIS_texture_filter4"
+              c:identifier="gdk_gl_get_GL_SGIS_texture_filter4">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIS_texture_filter4"
+              c:type="GdkGL_GL_SGIS_texture_filter4*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIX_async"
+              c:identifier="gdk_gl_get_GL_SGIX_async">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIX_async" c:type="GdkGL_GL_SGIX_async*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIX_flush_raster"
+              c:identifier="gdk_gl_get_GL_SGIX_flush_raster">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIX_flush_raster"
+              c:type="GdkGL_GL_SGIX_flush_raster*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIX_fog_texture"
+              c:identifier="gdk_gl_get_GL_SGIX_fog_texture">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIX_fog_texture"
+              c:type="GdkGL_GL_SGIX_fog_texture*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIX_fragment_lighting"
+              c:identifier="gdk_gl_get_GL_SGIX_fragment_lighting">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIX_fragment_lighting"
+              c:type="GdkGL_GL_SGIX_fragment_lighting*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIX_framezoom"
+              c:identifier="gdk_gl_get_GL_SGIX_framezoom">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIX_framezoom" c:type="GdkGL_GL_SGIX_framezoom*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIX_igloo_interface"
+              c:identifier="gdk_gl_get_GL_SGIX_igloo_interface">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIX_igloo_interface"
+              c:type="GdkGL_GL_SGIX_igloo_interface*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIX_instruments"
+              c:identifier="gdk_gl_get_GL_SGIX_instruments">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIX_instruments"
+              c:type="GdkGL_GL_SGIX_instruments*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIX_list_priority"
+              c:identifier="gdk_gl_get_GL_SGIX_list_priority">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIX_list_priority"
+              c:type="GdkGL_GL_SGIX_list_priority*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIX_pixel_texture"
+              c:identifier="gdk_gl_get_GL_SGIX_pixel_texture">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIX_pixel_texture"
+              c:type="GdkGL_GL_SGIX_pixel_texture*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIX_polynomial_ffd"
+              c:identifier="gdk_gl_get_GL_SGIX_polynomial_ffd">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIX_polynomial_ffd"
+              c:type="GdkGL_GL_SGIX_polynomial_ffd*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIX_reference_plane"
+              c:identifier="gdk_gl_get_GL_SGIX_reference_plane">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIX_reference_plane"
+              c:type="GdkGL_GL_SGIX_reference_plane*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIX_sprite"
+              c:identifier="gdk_gl_get_GL_SGIX_sprite">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIX_sprite" c:type="GdkGL_GL_SGIX_sprite*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGIX_tag_sample_buffer"
+              c:identifier="gdk_gl_get_GL_SGIX_tag_sample_buffer">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGIX_tag_sample_buffer"
+              c:type="GdkGL_GL_SGIX_tag_sample_buffer*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SGI_color_table"
+              c:identifier="gdk_gl_get_GL_SGI_color_table">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SGI_color_table" c:type="GdkGL_GL_SGI_color_table*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SUNX_constant_data"
+              c:identifier="gdk_gl_get_GL_SUNX_constant_data">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SUNX_constant_data"
+              c:type="GdkGL_GL_SUNX_constant_data*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SUN_global_alpha"
+              c:identifier="gdk_gl_get_GL_SUN_global_alpha">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SUN_global_alpha"
+              c:type="GdkGL_GL_SUN_global_alpha*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SUN_mesh_array"
+              c:identifier="gdk_gl_get_GL_SUN_mesh_array">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SUN_mesh_array" c:type="GdkGL_GL_SUN_mesh_array*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SUN_multi_draw_arrays"
+              c:identifier="gdk_gl_get_GL_SUN_multi_draw_arrays">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SUN_multi_draw_arrays"
+              c:type="GdkGL_GL_SUN_multi_draw_arrays*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SUN_triangle_list"
+              c:identifier="gdk_gl_get_GL_SUN_triangle_list">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SUN_triangle_list"
+              c:type="GdkGL_GL_SUN_triangle_list*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_SUN_vertex"
+              c:identifier="gdk_gl_get_GL_SUN_vertex">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_SUN_vertex" c:type="GdkGL_GL_SUN_vertex*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_VERSION_1_2"
+              c:identifier="gdk_gl_get_GL_VERSION_1_2">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_VERSION_1_2" c:type="GdkGL_GL_VERSION_1_2*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_VERSION_1_3"
+              c:identifier="gdk_gl_get_GL_VERSION_1_3">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_VERSION_1_3" c:type="GdkGL_GL_VERSION_1_3*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_VERSION_1_4"
+              c:identifier="gdk_gl_get_GL_VERSION_1_4">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_VERSION_1_4" c:type="GdkGL_GL_VERSION_1_4*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_GL_WIN_swap_hint"
+              c:identifier="gdk_gl_get_GL_WIN_swap_hint">
+      <return-value transfer-ownership="full">
+        <type name="GL_GL_WIN_swap_hint" c:type="GdkGL_GL_WIN_swap_hint*"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glActiveStencilFaceEXT"
+              c:identifier="gdk_gl_get_glActiveStencilFaceEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glActiveStencilFaceNV"
+              c:identifier="gdk_gl_get_glActiveStencilFaceNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glActiveTexture"
+              c:identifier="gdk_gl_get_glActiveTexture">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glActiveTextureARB"
+              c:identifier="gdk_gl_get_glActiveTextureARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glAddSwapHintRectWIN"
+              c:identifier="gdk_gl_get_glAddSwapHintRectWIN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glAlphaFragmentOp1ATI"
+              c:identifier="gdk_gl_get_glAlphaFragmentOp1ATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glAlphaFragmentOp2ATI"
+              c:identifier="gdk_gl_get_glAlphaFragmentOp2ATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glAlphaFragmentOp3ATI"
+              c:identifier="gdk_gl_get_glAlphaFragmentOp3ATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glApplyTextureEXT"
+              c:identifier="gdk_gl_get_glApplyTextureEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glAreProgramsResidentNV"
+              c:identifier="gdk_gl_get_glAreProgramsResidentNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glAreTexturesResidentEXT"
+              c:identifier="gdk_gl_get_glAreTexturesResidentEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glArrayElementEXT"
+              c:identifier="gdk_gl_get_glArrayElementEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glArrayObjectATI"
+              c:identifier="gdk_gl_get_glArrayObjectATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glAsyncMarkerSGIX"
+              c:identifier="gdk_gl_get_glAsyncMarkerSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBeginFragmentShaderATI"
+              c:identifier="gdk_gl_get_glBeginFragmentShaderATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBeginOcclusionQueryNV"
+              c:identifier="gdk_gl_get_glBeginOcclusionQueryNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBeginSceneEXT"
+              c:identifier="gdk_gl_get_glBeginSceneEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBeginVertexShaderEXT"
+              c:identifier="gdk_gl_get_glBeginVertexShaderEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBindBufferARB"
+              c:identifier="gdk_gl_get_glBindBufferARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBindFragmentShaderATI"
+              c:identifier="gdk_gl_get_glBindFragmentShaderATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBindLightParameterEXT"
+              c:identifier="gdk_gl_get_glBindLightParameterEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBindMaterialParameterEXT"
+              c:identifier="gdk_gl_get_glBindMaterialParameterEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBindParameterEXT"
+              c:identifier="gdk_gl_get_glBindParameterEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBindProgramARB"
+              c:identifier="gdk_gl_get_glBindProgramARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBindProgramNV"
+              c:identifier="gdk_gl_get_glBindProgramNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBindTexGenParameterEXT"
+              c:identifier="gdk_gl_get_glBindTexGenParameterEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBindTextureEXT"
+              c:identifier="gdk_gl_get_glBindTextureEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBindTextureUnitParameterEXT"
+              c:identifier="gdk_gl_get_glBindTextureUnitParameterEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBindVertexArrayAPPLE"
+              c:identifier="gdk_gl_get_glBindVertexArrayAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBindVertexShaderEXT"
+              c:identifier="gdk_gl_get_glBindVertexShaderEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBinormal3bEXT"
+              c:identifier="gdk_gl_get_glBinormal3bEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBinormal3bvEXT"
+              c:identifier="gdk_gl_get_glBinormal3bvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBinormal3dEXT"
+              c:identifier="gdk_gl_get_glBinormal3dEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBinormal3dvEXT"
+              c:identifier="gdk_gl_get_glBinormal3dvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBinormal3fEXT"
+              c:identifier="gdk_gl_get_glBinormal3fEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBinormal3fvEXT"
+              c:identifier="gdk_gl_get_glBinormal3fvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBinormal3iEXT"
+              c:identifier="gdk_gl_get_glBinormal3iEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBinormal3ivEXT"
+              c:identifier="gdk_gl_get_glBinormal3ivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBinormal3sEXT"
+              c:identifier="gdk_gl_get_glBinormal3sEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBinormal3svEXT"
+              c:identifier="gdk_gl_get_glBinormal3svEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBinormalPointerEXT"
+              c:identifier="gdk_gl_get_glBinormalPointerEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBlendColor"
+              c:identifier="gdk_gl_get_glBlendColor">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBlendColorEXT"
+              c:identifier="gdk_gl_get_glBlendColorEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBlendEquation"
+              c:identifier="gdk_gl_get_glBlendEquation">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBlendEquationEXT"
+              c:identifier="gdk_gl_get_glBlendEquationEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBlendEquationSeparateATI"
+              c:identifier="gdk_gl_get_glBlendEquationSeparateATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBlendFuncSeparate"
+              c:identifier="gdk_gl_get_glBlendFuncSeparate">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBlendFuncSeparateEXT"
+              c:identifier="gdk_gl_get_glBlendFuncSeparateEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBlendFuncSeparateINGR"
+              c:identifier="gdk_gl_get_glBlendFuncSeparateINGR">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBufferDataARB"
+              c:identifier="gdk_gl_get_glBufferDataARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBufferRegionEnabled"
+              c:identifier="gdk_gl_get_glBufferRegionEnabled">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glBufferSubDataARB"
+              c:identifier="gdk_gl_get_glBufferSubDataARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glClientActiveTexture"
+              c:identifier="gdk_gl_get_glClientActiveTexture">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glClientActiveTextureARB"
+              c:identifier="gdk_gl_get_glClientActiveTextureARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glClientActiveVertexStreamATI"
+              c:identifier="gdk_gl_get_glClientActiveVertexStreamATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColor3fVertex3fSUN"
+              c:identifier="gdk_gl_get_glColor3fVertex3fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColor3fVertex3fvSUN"
+              c:identifier="gdk_gl_get_glColor3fVertex3fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColor3hNV" c:identifier="gdk_gl_get_glColor3hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColor3hvNV"
+              c:identifier="gdk_gl_get_glColor3hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColor4fNormal3fVertex3fSUN"
+              c:identifier="gdk_gl_get_glColor4fNormal3fVertex3fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColor4fNormal3fVertex3fvSUN"
+              c:identifier="gdk_gl_get_glColor4fNormal3fVertex3fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColor4hNV" c:identifier="gdk_gl_get_glColor4hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColor4hvNV"
+              c:identifier="gdk_gl_get_glColor4hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColor4ubVertex2fSUN"
+              c:identifier="gdk_gl_get_glColor4ubVertex2fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColor4ubVertex2fvSUN"
+              c:identifier="gdk_gl_get_glColor4ubVertex2fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColor4ubVertex3fSUN"
+              c:identifier="gdk_gl_get_glColor4ubVertex3fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColor4ubVertex3fvSUN"
+              c:identifier="gdk_gl_get_glColor4ubVertex3fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColorFragmentOp1ATI"
+              c:identifier="gdk_gl_get_glColorFragmentOp1ATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColorFragmentOp2ATI"
+              c:identifier="gdk_gl_get_glColorFragmentOp2ATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColorFragmentOp3ATI"
+              c:identifier="gdk_gl_get_glColorFragmentOp3ATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColorPointerEXT"
+              c:identifier="gdk_gl_get_glColorPointerEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColorPointerListIBM"
+              c:identifier="gdk_gl_get_glColorPointerListIBM">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColorPointervINTEL"
+              c:identifier="gdk_gl_get_glColorPointervINTEL">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColorSubTable"
+              c:identifier="gdk_gl_get_glColorSubTable">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColorSubTableEXT"
+              c:identifier="gdk_gl_get_glColorSubTableEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColorTable"
+              c:identifier="gdk_gl_get_glColorTable">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColorTableEXT"
+              c:identifier="gdk_gl_get_glColorTableEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColorTableParameterfv"
+              c:identifier="gdk_gl_get_glColorTableParameterfv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColorTableParameterfvSGI"
+              c:identifier="gdk_gl_get_glColorTableParameterfvSGI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColorTableParameteriv"
+              c:identifier="gdk_gl_get_glColorTableParameteriv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColorTableParameterivSGI"
+              c:identifier="gdk_gl_get_glColorTableParameterivSGI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glColorTableSGI"
+              c:identifier="gdk_gl_get_glColorTableSGI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCombinerInputNV"
+              c:identifier="gdk_gl_get_glCombinerInputNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCombinerOutputNV"
+              c:identifier="gdk_gl_get_glCombinerOutputNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCombinerParameterfNV"
+              c:identifier="gdk_gl_get_glCombinerParameterfNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCombinerParameterfvNV"
+              c:identifier="gdk_gl_get_glCombinerParameterfvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCombinerParameteriNV"
+              c:identifier="gdk_gl_get_glCombinerParameteriNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCombinerParameterivNV"
+              c:identifier="gdk_gl_get_glCombinerParameterivNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCombinerStageParameterfvNV"
+              c:identifier="gdk_gl_get_glCombinerStageParameterfvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCompressedTexImage1D"
+              c:identifier="gdk_gl_get_glCompressedTexImage1D">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCompressedTexImage1DARB"
+              c:identifier="gdk_gl_get_glCompressedTexImage1DARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCompressedTexImage2D"
+              c:identifier="gdk_gl_get_glCompressedTexImage2D">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCompressedTexImage2DARB"
+              c:identifier="gdk_gl_get_glCompressedTexImage2DARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCompressedTexImage3D"
+              c:identifier="gdk_gl_get_glCompressedTexImage3D">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCompressedTexImage3DARB"
+              c:identifier="gdk_gl_get_glCompressedTexImage3DARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCompressedTexSubImage1D"
+              c:identifier="gdk_gl_get_glCompressedTexSubImage1D">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCompressedTexSubImage1DARB"
+              c:identifier="gdk_gl_get_glCompressedTexSubImage1DARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCompressedTexSubImage2D"
+              c:identifier="gdk_gl_get_glCompressedTexSubImage2D">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCompressedTexSubImage2DARB"
+              c:identifier="gdk_gl_get_glCompressedTexSubImage2DARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCompressedTexSubImage3D"
+              c:identifier="gdk_gl_get_glCompressedTexSubImage3D">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCompressedTexSubImage3DARB"
+              c:identifier="gdk_gl_get_glCompressedTexSubImage3DARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glConvolutionFilter1D"
+              c:identifier="gdk_gl_get_glConvolutionFilter1D">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glConvolutionFilter1DEXT"
+              c:identifier="gdk_gl_get_glConvolutionFilter1DEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glConvolutionFilter2D"
+              c:identifier="gdk_gl_get_glConvolutionFilter2D">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glConvolutionFilter2DEXT"
+              c:identifier="gdk_gl_get_glConvolutionFilter2DEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glConvolutionParameterf"
+              c:identifier="gdk_gl_get_glConvolutionParameterf">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glConvolutionParameterfEXT"
+              c:identifier="gdk_gl_get_glConvolutionParameterfEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glConvolutionParameterfv"
+              c:identifier="gdk_gl_get_glConvolutionParameterfv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glConvolutionParameterfvEXT"
+              c:identifier="gdk_gl_get_glConvolutionParameterfvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glConvolutionParameteri"
+              c:identifier="gdk_gl_get_glConvolutionParameteri">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glConvolutionParameteriEXT"
+              c:identifier="gdk_gl_get_glConvolutionParameteriEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glConvolutionParameteriv"
+              c:identifier="gdk_gl_get_glConvolutionParameteriv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glConvolutionParameterivEXT"
+              c:identifier="gdk_gl_get_glConvolutionParameterivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCopyColorSubTable"
+              c:identifier="gdk_gl_get_glCopyColorSubTable">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCopyColorSubTableEXT"
+              c:identifier="gdk_gl_get_glCopyColorSubTableEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCopyColorTable"
+              c:identifier="gdk_gl_get_glCopyColorTable">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCopyColorTableSGI"
+              c:identifier="gdk_gl_get_glCopyColorTableSGI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCopyConvolutionFilter1D"
+              c:identifier="gdk_gl_get_glCopyConvolutionFilter1D">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCopyConvolutionFilter1DEXT"
+              c:identifier="gdk_gl_get_glCopyConvolutionFilter1DEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCopyConvolutionFilter2D"
+              c:identifier="gdk_gl_get_glCopyConvolutionFilter2D">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCopyConvolutionFilter2DEXT"
+              c:identifier="gdk_gl_get_glCopyConvolutionFilter2DEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCopyTexImage1DEXT"
+              c:identifier="gdk_gl_get_glCopyTexImage1DEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCopyTexImage2DEXT"
+              c:identifier="gdk_gl_get_glCopyTexImage2DEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCopyTexSubImage1DEXT"
+              c:identifier="gdk_gl_get_glCopyTexSubImage1DEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCopyTexSubImage2DEXT"
+              c:identifier="gdk_gl_get_glCopyTexSubImage2DEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCopyTexSubImage3D"
+              c:identifier="gdk_gl_get_glCopyTexSubImage3D">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCopyTexSubImage3DEXT"
+              c:identifier="gdk_gl_get_glCopyTexSubImage3DEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCullParameterdvEXT"
+              c:identifier="gdk_gl_get_glCullParameterdvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCullParameterfvEXT"
+              c:identifier="gdk_gl_get_glCullParameterfvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glCurrentPaletteMatrixARB"
+              c:identifier="gdk_gl_get_glCurrentPaletteMatrixARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDeformSGIX"
+              c:identifier="gdk_gl_get_glDeformSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDeformationMap3dSGIX"
+              c:identifier="gdk_gl_get_glDeformationMap3dSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDeformationMap3fSGIX"
+              c:identifier="gdk_gl_get_glDeformationMap3fSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDeleteAsyncMarkersSGIX"
+              c:identifier="gdk_gl_get_glDeleteAsyncMarkersSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDeleteBufferRegion"
+              c:identifier="gdk_gl_get_glDeleteBufferRegion">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDeleteBuffersARB"
+              c:identifier="gdk_gl_get_glDeleteBuffersARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDeleteFencesAPPLE"
+              c:identifier="gdk_gl_get_glDeleteFencesAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDeleteFencesNV"
+              c:identifier="gdk_gl_get_glDeleteFencesNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDeleteFragmentShaderATI"
+              c:identifier="gdk_gl_get_glDeleteFragmentShaderATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDeleteOcclusionQueriesNV"
+              c:identifier="gdk_gl_get_glDeleteOcclusionQueriesNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDeleteProgramsARB"
+              c:identifier="gdk_gl_get_glDeleteProgramsARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDeleteProgramsNV"
+              c:identifier="gdk_gl_get_glDeleteProgramsNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDeleteTexturesEXT"
+              c:identifier="gdk_gl_get_glDeleteTexturesEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDeleteVertexArraysAPPLE"
+              c:identifier="gdk_gl_get_glDeleteVertexArraysAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDeleteVertexShaderEXT"
+              c:identifier="gdk_gl_get_glDeleteVertexShaderEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDepthBoundsEXT"
+              c:identifier="gdk_gl_get_glDepthBoundsEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDetailTexFuncSGIS"
+              c:identifier="gdk_gl_get_glDetailTexFuncSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDisableVariantClientStateEXT"
+              c:identifier="gdk_gl_get_glDisableVariantClientStateEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDisableVertexAttribAPPLE"
+              c:identifier="gdk_gl_get_glDisableVertexAttribAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDisableVertexAttribArrayARB"
+              c:identifier="gdk_gl_get_glDisableVertexAttribArrayARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDrawArraysEXT"
+              c:identifier="gdk_gl_get_glDrawArraysEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDrawBufferRegion"
+              c:identifier="gdk_gl_get_glDrawBufferRegion">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDrawBuffersATI"
+              c:identifier="gdk_gl_get_glDrawBuffersATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDrawElementArrayAPPLE"
+              c:identifier="gdk_gl_get_glDrawElementArrayAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDrawElementArrayATI"
+              c:identifier="gdk_gl_get_glDrawElementArrayATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDrawElementArrayNV"
+              c:identifier="gdk_gl_get_glDrawElementArrayNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDrawMeshArraysSUN"
+              c:identifier="gdk_gl_get_glDrawMeshArraysSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDrawRangeElementArrayAPPLE"
+              c:identifier="gdk_gl_get_glDrawRangeElementArrayAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDrawRangeElementArrayATI"
+              c:identifier="gdk_gl_get_glDrawRangeElementArrayATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDrawRangeElementArrayNV"
+              c:identifier="gdk_gl_get_glDrawRangeElementArrayNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDrawRangeElements"
+              c:identifier="gdk_gl_get_glDrawRangeElements">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glDrawRangeElementsEXT"
+              c:identifier="gdk_gl_get_glDrawRangeElementsEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glEdgeFlagPointerEXT"
+              c:identifier="gdk_gl_get_glEdgeFlagPointerEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glEdgeFlagPointerListIBM"
+              c:identifier="gdk_gl_get_glEdgeFlagPointerListIBM">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glElementPointerAPPLE"
+              c:identifier="gdk_gl_get_glElementPointerAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glElementPointerATI"
+              c:identifier="gdk_gl_get_glElementPointerATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glElementPointerNV"
+              c:identifier="gdk_gl_get_glElementPointerNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glEnableVariantClientStateEXT"
+              c:identifier="gdk_gl_get_glEnableVariantClientStateEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glEnableVertexAttribAPPLE"
+              c:identifier="gdk_gl_get_glEnableVertexAttribAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glEnableVertexAttribArrayARB"
+              c:identifier="gdk_gl_get_glEnableVertexAttribArrayARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glEndFragmentShaderATI"
+              c:identifier="gdk_gl_get_glEndFragmentShaderATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glEndOcclusionQueryNV"
+              c:identifier="gdk_gl_get_glEndOcclusionQueryNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glEndSceneEXT"
+              c:identifier="gdk_gl_get_glEndSceneEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glEndVertexShaderEXT"
+              c:identifier="gdk_gl_get_glEndVertexShaderEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glEvalMapsNV"
+              c:identifier="gdk_gl_get_glEvalMapsNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glExecuteProgramNV"
+              c:identifier="gdk_gl_get_glExecuteProgramNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glExtractComponentEXT"
+              c:identifier="gdk_gl_get_glExtractComponentEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFacetNormal3b"
+              c:identifier="gdk_gl_get_glFacetNormal3b">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFacetNormal3bv"
+              c:identifier="gdk_gl_get_glFacetNormal3bv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFacetNormal3d"
+              c:identifier="gdk_gl_get_glFacetNormal3d">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFacetNormal3dv"
+              c:identifier="gdk_gl_get_glFacetNormal3dv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFacetNormal3f"
+              c:identifier="gdk_gl_get_glFacetNormal3f">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFacetNormal3fv"
+              c:identifier="gdk_gl_get_glFacetNormal3fv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFacetNormal3i"
+              c:identifier="gdk_gl_get_glFacetNormal3i">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFacetNormal3iv"
+              c:identifier="gdk_gl_get_glFacetNormal3iv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFacetNormal3s"
+              c:identifier="gdk_gl_get_glFacetNormal3s">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFacetNormal3sv"
+              c:identifier="gdk_gl_get_glFacetNormal3sv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFinalCombinerInputNV"
+              c:identifier="gdk_gl_get_glFinalCombinerInputNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFinishAsyncSGIX"
+              c:identifier="gdk_gl_get_glFinishAsyncSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFinishFenceAPPLE"
+              c:identifier="gdk_gl_get_glFinishFenceAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFinishFenceNV"
+              c:identifier="gdk_gl_get_glFinishFenceNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFinishObjectAPPLE"
+              c:identifier="gdk_gl_get_glFinishObjectAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFinishTextureSUNX"
+              c:identifier="gdk_gl_get_glFinishTextureSUNX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFlushPixelDataRangeNV"
+              c:identifier="gdk_gl_get_glFlushPixelDataRangeNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFlushRasterSGIX"
+              c:identifier="gdk_gl_get_glFlushRasterSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFlushStaticDataIBM"
+              c:identifier="gdk_gl_get_glFlushStaticDataIBM">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFlushVertexArrayRangeAPPLE"
+              c:identifier="gdk_gl_get_glFlushVertexArrayRangeAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFlushVertexArrayRangeNV"
+              c:identifier="gdk_gl_get_glFlushVertexArrayRangeNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFogCoordPointer"
+              c:identifier="gdk_gl_get_glFogCoordPointer">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFogCoordPointerEXT"
+              c:identifier="gdk_gl_get_glFogCoordPointerEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFogCoordPointerListIBM"
+              c:identifier="gdk_gl_get_glFogCoordPointerListIBM">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFogCoordd" c:identifier="gdk_gl_get_glFogCoordd">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFogCoorddEXT"
+              c:identifier="gdk_gl_get_glFogCoorddEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFogCoorddv"
+              c:identifier="gdk_gl_get_glFogCoorddv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFogCoorddvEXT"
+              c:identifier="gdk_gl_get_glFogCoorddvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFogCoordf" c:identifier="gdk_gl_get_glFogCoordf">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFogCoordfEXT"
+              c:identifier="gdk_gl_get_glFogCoordfEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFogCoordfv"
+              c:identifier="gdk_gl_get_glFogCoordfv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFogCoordfvEXT"
+              c:identifier="gdk_gl_get_glFogCoordfvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFogCoordhNV"
+              c:identifier="gdk_gl_get_glFogCoordhNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFogCoordhvNV"
+              c:identifier="gdk_gl_get_glFogCoordhvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFogFuncSGIS"
+              c:identifier="gdk_gl_get_glFogFuncSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentColorMaterialEXT"
+              c:identifier="gdk_gl_get_glFragmentColorMaterialEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentColorMaterialSGIX"
+              c:identifier="gdk_gl_get_glFragmentColorMaterialSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentLightModelfEXT"
+              c:identifier="gdk_gl_get_glFragmentLightModelfEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentLightModelfSGIX"
+              c:identifier="gdk_gl_get_glFragmentLightModelfSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentLightModelfvEXT"
+              c:identifier="gdk_gl_get_glFragmentLightModelfvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentLightModelfvSGIX"
+              c:identifier="gdk_gl_get_glFragmentLightModelfvSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentLightModeliEXT"
+              c:identifier="gdk_gl_get_glFragmentLightModeliEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentLightModeliSGIX"
+              c:identifier="gdk_gl_get_glFragmentLightModeliSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentLightModelivEXT"
+              c:identifier="gdk_gl_get_glFragmentLightModelivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentLightModelivSGIX"
+              c:identifier="gdk_gl_get_glFragmentLightModelivSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentLightfEXT"
+              c:identifier="gdk_gl_get_glFragmentLightfEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentLightfSGIX"
+              c:identifier="gdk_gl_get_glFragmentLightfSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentLightfvEXT"
+              c:identifier="gdk_gl_get_glFragmentLightfvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentLightfvSGIX"
+              c:identifier="gdk_gl_get_glFragmentLightfvSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentLightiEXT"
+              c:identifier="gdk_gl_get_glFragmentLightiEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentLightiSGIX"
+              c:identifier="gdk_gl_get_glFragmentLightiSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentLightivEXT"
+              c:identifier="gdk_gl_get_glFragmentLightivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentLightivSGIX"
+              c:identifier="gdk_gl_get_glFragmentLightivSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentMaterialfEXT"
+              c:identifier="gdk_gl_get_glFragmentMaterialfEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentMaterialfSGIX"
+              c:identifier="gdk_gl_get_glFragmentMaterialfSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentMaterialfvEXT"
+              c:identifier="gdk_gl_get_glFragmentMaterialfvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentMaterialfvSGIX"
+              c:identifier="gdk_gl_get_glFragmentMaterialfvSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentMaterialiEXT"
+              c:identifier="gdk_gl_get_glFragmentMaterialiEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentMaterialiSGIX"
+              c:identifier="gdk_gl_get_glFragmentMaterialiSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentMaterialivEXT"
+              c:identifier="gdk_gl_get_glFragmentMaterialivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFragmentMaterialivSGIX"
+              c:identifier="gdk_gl_get_glFragmentMaterialivSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFrameZoomSGIX"
+              c:identifier="gdk_gl_get_glFrameZoomSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glFreeObjectBufferATI"
+              c:identifier="gdk_gl_get_glFreeObjectBufferATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGenAsyncMarkersSGIX"
+              c:identifier="gdk_gl_get_glGenAsyncMarkersSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGenBuffersARB"
+              c:identifier="gdk_gl_get_glGenBuffersARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGenFencesAPPLE"
+              c:identifier="gdk_gl_get_glGenFencesAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGenFencesNV"
+              c:identifier="gdk_gl_get_glGenFencesNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGenFragmentShadersATI"
+              c:identifier="gdk_gl_get_glGenFragmentShadersATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGenOcclusionQueriesNV"
+              c:identifier="gdk_gl_get_glGenOcclusionQueriesNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGenProgramsARB"
+              c:identifier="gdk_gl_get_glGenProgramsARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGenProgramsNV"
+              c:identifier="gdk_gl_get_glGenProgramsNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGenSymbolsEXT"
+              c:identifier="gdk_gl_get_glGenSymbolsEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGenTexturesEXT"
+              c:identifier="gdk_gl_get_glGenTexturesEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGenVertexArraysAPPLE"
+              c:identifier="gdk_gl_get_glGenVertexArraysAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGenVertexShadersEXT"
+              c:identifier="gdk_gl_get_glGenVertexShadersEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetArrayObjectfvATI"
+              c:identifier="gdk_gl_get_glGetArrayObjectfvATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetArrayObjectivATI"
+              c:identifier="gdk_gl_get_glGetArrayObjectivATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetBufferParameterivARB"
+              c:identifier="gdk_gl_get_glGetBufferParameterivARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetBufferPointervARB"
+              c:identifier="gdk_gl_get_glGetBufferPointervARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetBufferSubDataARB"
+              c:identifier="gdk_gl_get_glGetBufferSubDataARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetColorTable"
+              c:identifier="gdk_gl_get_glGetColorTable">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetColorTableEXT"
+              c:identifier="gdk_gl_get_glGetColorTableEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetColorTableParameterfv"
+              c:identifier="gdk_gl_get_glGetColorTableParameterfv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetColorTableParameterfvEXT"
+              c:identifier="gdk_gl_get_glGetColorTableParameterfvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetColorTableParameterfvSGI"
+              c:identifier="gdk_gl_get_glGetColorTableParameterfvSGI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetColorTableParameteriv"
+              c:identifier="gdk_gl_get_glGetColorTableParameteriv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetColorTableParameterivEXT"
+              c:identifier="gdk_gl_get_glGetColorTableParameterivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetColorTableParameterivSGI"
+              c:identifier="gdk_gl_get_glGetColorTableParameterivSGI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetColorTableSGI"
+              c:identifier="gdk_gl_get_glGetColorTableSGI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetCombinerInputParameterfvNV"
+              c:identifier="gdk_gl_get_glGetCombinerInputParameterfvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetCombinerInputParameterivNV"
+              c:identifier="gdk_gl_get_glGetCombinerInputParameterivNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetCombinerOutputParameterfvNV"
+              c:identifier="gdk_gl_get_glGetCombinerOutputParameterfvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetCombinerOutputParameterivNV"
+              c:identifier="gdk_gl_get_glGetCombinerOutputParameterivNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetCombinerStageParameterfvNV"
+              c:identifier="gdk_gl_get_glGetCombinerStageParameterfvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetCompressedTexImage"
+              c:identifier="gdk_gl_get_glGetCompressedTexImage">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetCompressedTexImageARB"
+              c:identifier="gdk_gl_get_glGetCompressedTexImageARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetConvolutionFilter"
+              c:identifier="gdk_gl_get_glGetConvolutionFilter">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetConvolutionFilterEXT"
+              c:identifier="gdk_gl_get_glGetConvolutionFilterEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetConvolutionParameterfv"
+              c:identifier="gdk_gl_get_glGetConvolutionParameterfv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetConvolutionParameterfvEXT"
+              c:identifier="gdk_gl_get_glGetConvolutionParameterfvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetConvolutionParameteriv"
+              c:identifier="gdk_gl_get_glGetConvolutionParameteriv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetConvolutionParameterivEXT"
+              c:identifier="gdk_gl_get_glGetConvolutionParameterivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetDetailTexFuncSGIS"
+              c:identifier="gdk_gl_get_glGetDetailTexFuncSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetFenceivNV"
+              c:identifier="gdk_gl_get_glGetFenceivNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetFinalCombinerInputParameterfvNV"
+              c:identifier="gdk_gl_get_glGetFinalCombinerInputParameterfvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetFinalCombinerInputParameterivNV"
+              c:identifier="gdk_gl_get_glGetFinalCombinerInputParameterivNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetFogFuncSGIS"
+              c:identifier="gdk_gl_get_glGetFogFuncSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetFragmentLightfvEXT"
+              c:identifier="gdk_gl_get_glGetFragmentLightfvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetFragmentLightfvSGIX"
+              c:identifier="gdk_gl_get_glGetFragmentLightfvSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetFragmentLightivEXT"
+              c:identifier="gdk_gl_get_glGetFragmentLightivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetFragmentLightivSGIX"
+              c:identifier="gdk_gl_get_glGetFragmentLightivSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetFragmentMaterialfvEXT"
+              c:identifier="gdk_gl_get_glGetFragmentMaterialfvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetFragmentMaterialfvSGIX"
+              c:identifier="gdk_gl_get_glGetFragmentMaterialfvSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetFragmentMaterialivEXT"
+              c:identifier="gdk_gl_get_glGetFragmentMaterialivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetFragmentMaterialivSGIX"
+              c:identifier="gdk_gl_get_glGetFragmentMaterialivSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetHistogram"
+              c:identifier="gdk_gl_get_glGetHistogram">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetHistogramEXT"
+              c:identifier="gdk_gl_get_glGetHistogramEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetHistogramParameterfv"
+              c:identifier="gdk_gl_get_glGetHistogramParameterfv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetHistogramParameterfvEXT"
+              c:identifier="gdk_gl_get_glGetHistogramParameterfvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetHistogramParameteriv"
+              c:identifier="gdk_gl_get_glGetHistogramParameteriv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetHistogramParameterivEXT"
+              c:identifier="gdk_gl_get_glGetHistogramParameterivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetImageTransformParameterfvHP"
+              c:identifier="gdk_gl_get_glGetImageTransformParameterfvHP">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetImageTransformParameterivHP"
+              c:identifier="gdk_gl_get_glGetImageTransformParameterivHP">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetInstrumentsSGIX"
+              c:identifier="gdk_gl_get_glGetInstrumentsSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetInvariantBooleanvEXT"
+              c:identifier="gdk_gl_get_glGetInvariantBooleanvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetInvariantFloatvEXT"
+              c:identifier="gdk_gl_get_glGetInvariantFloatvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetInvariantIntegervEXT"
+              c:identifier="gdk_gl_get_glGetInvariantIntegervEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetListParameterfvSGIX"
+              c:identifier="gdk_gl_get_glGetListParameterfvSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetListParameterivSGIX"
+              c:identifier="gdk_gl_get_glGetListParameterivSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetLocalConstantBooleanvEXT"
+              c:identifier="gdk_gl_get_glGetLocalConstantBooleanvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetLocalConstantFloatvEXT"
+              c:identifier="gdk_gl_get_glGetLocalConstantFloatvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetLocalConstantIntegervEXT"
+              c:identifier="gdk_gl_get_glGetLocalConstantIntegervEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetMapAttribParameterfvNV"
+              c:identifier="gdk_gl_get_glGetMapAttribParameterfvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetMapAttribParameterivNV"
+              c:identifier="gdk_gl_get_glGetMapAttribParameterivNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetMapControlPointsNV"
+              c:identifier="gdk_gl_get_glGetMapControlPointsNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetMapParameterfvNV"
+              c:identifier="gdk_gl_get_glGetMapParameterfvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetMapParameterivNV"
+              c:identifier="gdk_gl_get_glGetMapParameterivNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetMinmax" c:identifier="gdk_gl_get_glGetMinmax">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetMinmaxEXT"
+              c:identifier="gdk_gl_get_glGetMinmaxEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetMinmaxParameterfv"
+              c:identifier="gdk_gl_get_glGetMinmaxParameterfv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetMinmaxParameterfvEXT"
+              c:identifier="gdk_gl_get_glGetMinmaxParameterfvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetMinmaxParameteriv"
+              c:identifier="gdk_gl_get_glGetMinmaxParameteriv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetMinmaxParameterivEXT"
+              c:identifier="gdk_gl_get_glGetMinmaxParameterivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetObjectBufferfvATI"
+              c:identifier="gdk_gl_get_glGetObjectBufferfvATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetObjectBufferivATI"
+              c:identifier="gdk_gl_get_glGetObjectBufferivATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetOcclusionQueryivNV"
+              c:identifier="gdk_gl_get_glGetOcclusionQueryivNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetOcclusionQueryuivNV"
+              c:identifier="gdk_gl_get_glGetOcclusionQueryuivNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetPixelTexGenParameterfvSGIS"
+              c:identifier="gdk_gl_get_glGetPixelTexGenParameterfvSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetPixelTexGenParameterivSGIS"
+              c:identifier="gdk_gl_get_glGetPixelTexGenParameterivSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetPointervEXT"
+              c:identifier="gdk_gl_get_glGetPointervEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetProgramEnvParameterdvARB"
+              c:identifier="gdk_gl_get_glGetProgramEnvParameterdvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetProgramEnvParameterfvARB"
+              c:identifier="gdk_gl_get_glGetProgramEnvParameterfvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetProgramLocalParameterdvARB"
+              c:identifier="gdk_gl_get_glGetProgramLocalParameterdvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetProgramLocalParameterfvARB"
+              c:identifier="gdk_gl_get_glGetProgramLocalParameterfvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetProgramNamedParameterdvNV"
+              c:identifier="gdk_gl_get_glGetProgramNamedParameterdvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetProgramNamedParameterfvNV"
+              c:identifier="gdk_gl_get_glGetProgramNamedParameterfvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetProgramParameterdvNV"
+              c:identifier="gdk_gl_get_glGetProgramParameterdvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetProgramParameterfvNV"
+              c:identifier="gdk_gl_get_glGetProgramParameterfvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetProgramStringARB"
+              c:identifier="gdk_gl_get_glGetProgramStringARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetProgramStringNV"
+              c:identifier="gdk_gl_get_glGetProgramStringNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetProgramivARB"
+              c:identifier="gdk_gl_get_glGetProgramivARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetProgramivNV"
+              c:identifier="gdk_gl_get_glGetProgramivNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetSeparableFilter"
+              c:identifier="gdk_gl_get_glGetSeparableFilter">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetSeparableFilterEXT"
+              c:identifier="gdk_gl_get_glGetSeparableFilterEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetSharpenTexFuncSGIS"
+              c:identifier="gdk_gl_get_glGetSharpenTexFuncSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetTexBumpParameterfvATI"
+              c:identifier="gdk_gl_get_glGetTexBumpParameterfvATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetTexBumpParameterivATI"
+              c:identifier="gdk_gl_get_glGetTexBumpParameterivATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetTexFilterFuncSGIS"
+              c:identifier="gdk_gl_get_glGetTexFilterFuncSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetTexParameterPointervAPPLE"
+              c:identifier="gdk_gl_get_glGetTexParameterPointervAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetTrackMatrixivNV"
+              c:identifier="gdk_gl_get_glGetTrackMatrixivNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetVariantArrayObjectfvATI"
+              c:identifier="gdk_gl_get_glGetVariantArrayObjectfvATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetVariantArrayObjectivATI"
+              c:identifier="gdk_gl_get_glGetVariantArrayObjectivATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetVariantBooleanvEXT"
+              c:identifier="gdk_gl_get_glGetVariantBooleanvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetVariantFloatvEXT"
+              c:identifier="gdk_gl_get_glGetVariantFloatvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetVariantIntegervEXT"
+              c:identifier="gdk_gl_get_glGetVariantIntegervEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetVariantPointervEXT"
+              c:identifier="gdk_gl_get_glGetVariantPointervEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetVertexAttribArrayObjectfvATI"
+              c:identifier="gdk_gl_get_glGetVertexAttribArrayObjectfvATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetVertexAttribArrayObjectivATI"
+              c:identifier="gdk_gl_get_glGetVertexAttribArrayObjectivATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetVertexAttribPointervARB"
+              c:identifier="gdk_gl_get_glGetVertexAttribPointervARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetVertexAttribPointervNV"
+              c:identifier="gdk_gl_get_glGetVertexAttribPointervNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetVertexAttribdvARB"
+              c:identifier="gdk_gl_get_glGetVertexAttribdvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetVertexAttribdvNV"
+              c:identifier="gdk_gl_get_glGetVertexAttribdvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetVertexAttribfvARB"
+              c:identifier="gdk_gl_get_glGetVertexAttribfvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetVertexAttribfvNV"
+              c:identifier="gdk_gl_get_glGetVertexAttribfvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetVertexAttribivARB"
+              c:identifier="gdk_gl_get_glGetVertexAttribivARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGetVertexAttribivNV"
+              c:identifier="gdk_gl_get_glGetVertexAttribivNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGlobalAlphaFactorbSUN"
+              c:identifier="gdk_gl_get_glGlobalAlphaFactorbSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGlobalAlphaFactordSUN"
+              c:identifier="gdk_gl_get_glGlobalAlphaFactordSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGlobalAlphaFactorfSUN"
+              c:identifier="gdk_gl_get_glGlobalAlphaFactorfSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGlobalAlphaFactoriSUN"
+              c:identifier="gdk_gl_get_glGlobalAlphaFactoriSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGlobalAlphaFactorsSUN"
+              c:identifier="gdk_gl_get_glGlobalAlphaFactorsSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGlobalAlphaFactorubSUN"
+              c:identifier="gdk_gl_get_glGlobalAlphaFactorubSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGlobalAlphaFactoruiSUN"
+              c:identifier="gdk_gl_get_glGlobalAlphaFactoruiSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glGlobalAlphaFactorusSUN"
+              c:identifier="gdk_gl_get_glGlobalAlphaFactorusSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glHintPGI" c:identifier="gdk_gl_get_glHintPGI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glHistogram" c:identifier="gdk_gl_get_glHistogram">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glHistogramEXT"
+              c:identifier="gdk_gl_get_glHistogramEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glIglooInterfaceSGIX"
+              c:identifier="gdk_gl_get_glIglooInterfaceSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glImageTransformParameterfHP"
+              c:identifier="gdk_gl_get_glImageTransformParameterfHP">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glImageTransformParameterfvHP"
+              c:identifier="gdk_gl_get_glImageTransformParameterfvHP">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glImageTransformParameteriHP"
+              c:identifier="gdk_gl_get_glImageTransformParameteriHP">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glImageTransformParameterivHP"
+              c:identifier="gdk_gl_get_glImageTransformParameterivHP">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glIndexFuncEXT"
+              c:identifier="gdk_gl_get_glIndexFuncEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glIndexMaterialEXT"
+              c:identifier="gdk_gl_get_glIndexMaterialEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glIndexPointerEXT"
+              c:identifier="gdk_gl_get_glIndexPointerEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glIndexPointerListIBM"
+              c:identifier="gdk_gl_get_glIndexPointerListIBM">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glInsertComponentEXT"
+              c:identifier="gdk_gl_get_glInsertComponentEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glInstrumentsBufferSGIX"
+              c:identifier="gdk_gl_get_glInstrumentsBufferSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glInterleavedTextureCoordSetsEXT"
+              c:identifier="gdk_gl_get_glInterleavedTextureCoordSetsEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glIsAsyncMarkerSGIX"
+              c:identifier="gdk_gl_get_glIsAsyncMarkerSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glIsBufferARB"
+              c:identifier="gdk_gl_get_glIsBufferARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glIsFenceAPPLE"
+              c:identifier="gdk_gl_get_glIsFenceAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glIsFenceNV" c:identifier="gdk_gl_get_glIsFenceNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glIsObjectBufferATI"
+              c:identifier="gdk_gl_get_glIsObjectBufferATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glIsOcclusionQueryNV"
+              c:identifier="gdk_gl_get_glIsOcclusionQueryNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glIsProgramARB"
+              c:identifier="gdk_gl_get_glIsProgramARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glIsProgramNV"
+              c:identifier="gdk_gl_get_glIsProgramNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glIsTextureEXT"
+              c:identifier="gdk_gl_get_glIsTextureEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glIsVariantEnabledEXT"
+              c:identifier="gdk_gl_get_glIsVariantEnabledEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glIsVertexArrayAPPLE"
+              c:identifier="gdk_gl_get_glIsVertexArrayAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glIsVertexAttribEnabledAPPLE"
+              c:identifier="gdk_gl_get_glIsVertexAttribEnabledAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glLightEnviEXT"
+              c:identifier="gdk_gl_get_glLightEnviEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glLightEnviSGIX"
+              c:identifier="gdk_gl_get_glLightEnviSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glListParameterfSGIX"
+              c:identifier="gdk_gl_get_glListParameterfSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glListParameterfvSGIX"
+              c:identifier="gdk_gl_get_glListParameterfvSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glListParameteriSGIX"
+              c:identifier="gdk_gl_get_glListParameteriSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glListParameterivSGIX"
+              c:identifier="gdk_gl_get_glListParameterivSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glLoadIdentityDeformationMapSGIX"
+              c:identifier="gdk_gl_get_glLoadIdentityDeformationMapSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glLoadProgramNV"
+              c:identifier="gdk_gl_get_glLoadProgramNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glLoadTransposeMatrixd"
+              c:identifier="gdk_gl_get_glLoadTransposeMatrixd">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glLoadTransposeMatrixdARB"
+              c:identifier="gdk_gl_get_glLoadTransposeMatrixdARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glLoadTransposeMatrixf"
+              c:identifier="gdk_gl_get_glLoadTransposeMatrixf">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glLoadTransposeMatrixfARB"
+              c:identifier="gdk_gl_get_glLoadTransposeMatrixfARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glLockArraysEXT"
+              c:identifier="gdk_gl_get_glLockArraysEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMapBufferARB"
+              c:identifier="gdk_gl_get_glMapBufferARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMapControlPointsNV"
+              c:identifier="gdk_gl_get_glMapControlPointsNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMapObjectBufferATI"
+              c:identifier="gdk_gl_get_glMapObjectBufferATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMapParameterfvNV"
+              c:identifier="gdk_gl_get_glMapParameterfvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMapParameterivNV"
+              c:identifier="gdk_gl_get_glMapParameterivNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMapVertexAttrib1dAPPLE"
+              c:identifier="gdk_gl_get_glMapVertexAttrib1dAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMapVertexAttrib1fAPPLE"
+              c:identifier="gdk_gl_get_glMapVertexAttrib1fAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMapVertexAttrib2dAPPLE"
+              c:identifier="gdk_gl_get_glMapVertexAttrib2dAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMapVertexAttrib2fAPPLE"
+              c:identifier="gdk_gl_get_glMapVertexAttrib2fAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMatrixIndexPointerARB"
+              c:identifier="gdk_gl_get_glMatrixIndexPointerARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMatrixIndexubvARB"
+              c:identifier="gdk_gl_get_glMatrixIndexubvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMatrixIndexuivARB"
+              c:identifier="gdk_gl_get_glMatrixIndexuivARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMatrixIndexusvARB"
+              c:identifier="gdk_gl_get_glMatrixIndexusvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMinmax" c:identifier="gdk_gl_get_glMinmax">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMinmaxEXT" c:identifier="gdk_gl_get_glMinmaxEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultTransposeMatrixd"
+              c:identifier="gdk_gl_get_glMultTransposeMatrixd">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultTransposeMatrixdARB"
+              c:identifier="gdk_gl_get_glMultTransposeMatrixdARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultTransposeMatrixf"
+              c:identifier="gdk_gl_get_glMultTransposeMatrixf">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultTransposeMatrixfARB"
+              c:identifier="gdk_gl_get_glMultTransposeMatrixfARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiDrawArrays"
+              c:identifier="gdk_gl_get_glMultiDrawArrays">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiDrawArraysEXT"
+              c:identifier="gdk_gl_get_glMultiDrawArraysEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiDrawArraysSUN"
+              c:identifier="gdk_gl_get_glMultiDrawArraysSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiDrawElementArrayAPPLE"
+              c:identifier="gdk_gl_get_glMultiDrawElementArrayAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiDrawElementArrayNV"
+              c:identifier="gdk_gl_get_glMultiDrawElementArrayNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiDrawElements"
+              c:identifier="gdk_gl_get_glMultiDrawElements">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiDrawElementsEXT"
+              c:identifier="gdk_gl_get_glMultiDrawElementsEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiDrawElementsSUN"
+              c:identifier="gdk_gl_get_glMultiDrawElementsSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiDrawRangeElementArrayAPPLE"
+              c:identifier="gdk_gl_get_glMultiDrawRangeElementArrayAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiDrawRangeElementArrayNV"
+              c:identifier="gdk_gl_get_glMultiDrawRangeElementArrayNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiModeDrawArraysIBM"
+              c:identifier="gdk_gl_get_glMultiModeDrawArraysIBM">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiModeDrawElementsIBM"
+              c:identifier="gdk_gl_get_glMultiModeDrawElementsIBM">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1d"
+              c:identifier="gdk_gl_get_glMultiTexCoord1d">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1dARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord1dARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1dEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord1dEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1dSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord1dSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1dv"
+              c:identifier="gdk_gl_get_glMultiTexCoord1dv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1dvARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord1dvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1dvEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord1dvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1dvSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord1dvSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1f"
+              c:identifier="gdk_gl_get_glMultiTexCoord1f">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1fARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord1fARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1fEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord1fEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1fSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord1fSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1fv"
+              c:identifier="gdk_gl_get_glMultiTexCoord1fv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1fvARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord1fvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1fvEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord1fvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1fvSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord1fvSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1hNV"
+              c:identifier="gdk_gl_get_glMultiTexCoord1hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1hvNV"
+              c:identifier="gdk_gl_get_glMultiTexCoord1hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1i"
+              c:identifier="gdk_gl_get_glMultiTexCoord1i">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1iARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord1iARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1iEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord1iEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1iSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord1iSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1iv"
+              c:identifier="gdk_gl_get_glMultiTexCoord1iv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1ivARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord1ivARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1ivEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord1ivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1ivSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord1ivSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1s"
+              c:identifier="gdk_gl_get_glMultiTexCoord1s">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1sARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord1sARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1sEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord1sEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1sSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord1sSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1sv"
+              c:identifier="gdk_gl_get_glMultiTexCoord1sv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1svARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord1svARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1svEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord1svEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord1svSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord1svSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2d"
+              c:identifier="gdk_gl_get_glMultiTexCoord2d">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2dARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord2dARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2dEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord2dEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2dSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord2dSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2dv"
+              c:identifier="gdk_gl_get_glMultiTexCoord2dv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2dvARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord2dvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2dvEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord2dvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2dvSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord2dvSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2f"
+              c:identifier="gdk_gl_get_glMultiTexCoord2f">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2fARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord2fARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2fEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord2fEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2fSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord2fSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2fv"
+              c:identifier="gdk_gl_get_glMultiTexCoord2fv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2fvARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord2fvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2fvEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord2fvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2fvSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord2fvSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2hNV"
+              c:identifier="gdk_gl_get_glMultiTexCoord2hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2hvNV"
+              c:identifier="gdk_gl_get_glMultiTexCoord2hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2i"
+              c:identifier="gdk_gl_get_glMultiTexCoord2i">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2iARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord2iARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2iEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord2iEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2iSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord2iSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2iv"
+              c:identifier="gdk_gl_get_glMultiTexCoord2iv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2ivARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord2ivARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2ivEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord2ivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2ivSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord2ivSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2s"
+              c:identifier="gdk_gl_get_glMultiTexCoord2s">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2sARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord2sARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2sEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord2sEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2sSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord2sSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2sv"
+              c:identifier="gdk_gl_get_glMultiTexCoord2sv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2svARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord2svARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2svEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord2svEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord2svSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord2svSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3d"
+              c:identifier="gdk_gl_get_glMultiTexCoord3d">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3dARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord3dARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3dEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord3dEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3dSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord3dSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3dv"
+              c:identifier="gdk_gl_get_glMultiTexCoord3dv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3dvARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord3dvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3dvEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord3dvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3dvSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord3dvSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3f"
+              c:identifier="gdk_gl_get_glMultiTexCoord3f">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3fARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord3fARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3fEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord3fEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3fSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord3fSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3fv"
+              c:identifier="gdk_gl_get_glMultiTexCoord3fv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3fvARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord3fvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3fvEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord3fvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3fvSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord3fvSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3hNV"
+              c:identifier="gdk_gl_get_glMultiTexCoord3hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3hvNV"
+              c:identifier="gdk_gl_get_glMultiTexCoord3hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3i"
+              c:identifier="gdk_gl_get_glMultiTexCoord3i">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3iARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord3iARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3iEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord3iEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3iSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord3iSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3iv"
+              c:identifier="gdk_gl_get_glMultiTexCoord3iv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3ivARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord3ivARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3ivEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord3ivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3ivSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord3ivSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3s"
+              c:identifier="gdk_gl_get_glMultiTexCoord3s">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3sARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord3sARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3sEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord3sEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3sSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord3sSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3sv"
+              c:identifier="gdk_gl_get_glMultiTexCoord3sv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3svARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord3svARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3svEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord3svEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord3svSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord3svSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4d"
+              c:identifier="gdk_gl_get_glMultiTexCoord4d">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4dARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord4dARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4dEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord4dEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4dSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord4dSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4dv"
+              c:identifier="gdk_gl_get_glMultiTexCoord4dv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4dvARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord4dvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4dvEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord4dvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4dvSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord4dvSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4f"
+              c:identifier="gdk_gl_get_glMultiTexCoord4f">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4fARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord4fARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4fEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord4fEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4fSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord4fSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4fv"
+              c:identifier="gdk_gl_get_glMultiTexCoord4fv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4fvARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord4fvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4fvEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord4fvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4fvSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord4fvSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4hNV"
+              c:identifier="gdk_gl_get_glMultiTexCoord4hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4hvNV"
+              c:identifier="gdk_gl_get_glMultiTexCoord4hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4i"
+              c:identifier="gdk_gl_get_glMultiTexCoord4i">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4iARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord4iARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4iEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord4iEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4iSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord4iSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4iv"
+              c:identifier="gdk_gl_get_glMultiTexCoord4iv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4ivARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord4ivARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4ivEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord4ivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4ivSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord4ivSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4s"
+              c:identifier="gdk_gl_get_glMultiTexCoord4s">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4sARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord4sARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4sEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord4sEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4sSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord4sSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4sv"
+              c:identifier="gdk_gl_get_glMultiTexCoord4sv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4svARB"
+              c:identifier="gdk_gl_get_glMultiTexCoord4svARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4svEXT"
+              c:identifier="gdk_gl_get_glMultiTexCoord4svEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoord4svSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoord4svSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glMultiTexCoordPointerSGIS"
+              c:identifier="gdk_gl_get_glMultiTexCoordPointerSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNewBufferRegion"
+              c:identifier="gdk_gl_get_glNewBufferRegion">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNewObjectBufferATI"
+              c:identifier="gdk_gl_get_glNewObjectBufferATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNormal3fVertex3fSUN"
+              c:identifier="gdk_gl_get_glNormal3fVertex3fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNormal3fVertex3fvSUN"
+              c:identifier="gdk_gl_get_glNormal3fVertex3fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNormal3hNV"
+              c:identifier="gdk_gl_get_glNormal3hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNormal3hvNV"
+              c:identifier="gdk_gl_get_glNormal3hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNormalPointerEXT"
+              c:identifier="gdk_gl_get_glNormalPointerEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNormalPointerListIBM"
+              c:identifier="gdk_gl_get_glNormalPointerListIBM">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNormalPointervINTEL"
+              c:identifier="gdk_gl_get_glNormalPointervINTEL">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNormalStream3bATI"
+              c:identifier="gdk_gl_get_glNormalStream3bATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNormalStream3bvATI"
+              c:identifier="gdk_gl_get_glNormalStream3bvATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNormalStream3dATI"
+              c:identifier="gdk_gl_get_glNormalStream3dATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNormalStream3dvATI"
+              c:identifier="gdk_gl_get_glNormalStream3dvATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNormalStream3fATI"
+              c:identifier="gdk_gl_get_glNormalStream3fATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNormalStream3fvATI"
+              c:identifier="gdk_gl_get_glNormalStream3fvATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNormalStream3iATI"
+              c:identifier="gdk_gl_get_glNormalStream3iATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNormalStream3ivATI"
+              c:identifier="gdk_gl_get_glNormalStream3ivATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNormalStream3sATI"
+              c:identifier="gdk_gl_get_glNormalStream3sATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glNormalStream3svATI"
+              c:identifier="gdk_gl_get_glNormalStream3svATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPNTrianglesfATI"
+              c:identifier="gdk_gl_get_glPNTrianglesfATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPNTrianglesfATIX"
+              c:identifier="gdk_gl_get_glPNTrianglesfATIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPNTrianglesiATI"
+              c:identifier="gdk_gl_get_glPNTrianglesiATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPNTrianglesiATIX"
+              c:identifier="gdk_gl_get_glPNTrianglesiATIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPassTexCoordATI"
+              c:identifier="gdk_gl_get_glPassTexCoordATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPixelDataRangeNV"
+              c:identifier="gdk_gl_get_glPixelDataRangeNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPixelTexGenParameterfSGIS"
+              c:identifier="gdk_gl_get_glPixelTexGenParameterfSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPixelTexGenParameterfvSGIS"
+              c:identifier="gdk_gl_get_glPixelTexGenParameterfvSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPixelTexGenParameteriSGIS"
+              c:identifier="gdk_gl_get_glPixelTexGenParameteriSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPixelTexGenParameterivSGIS"
+              c:identifier="gdk_gl_get_glPixelTexGenParameterivSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPixelTexGenSGIX"
+              c:identifier="gdk_gl_get_glPixelTexGenSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPixelTransformParameterfEXT"
+              c:identifier="gdk_gl_get_glPixelTransformParameterfEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPixelTransformParameterfvEXT"
+              c:identifier="gdk_gl_get_glPixelTransformParameterfvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPixelTransformParameteriEXT"
+              c:identifier="gdk_gl_get_glPixelTransformParameteriEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPixelTransformParameterivEXT"
+              c:identifier="gdk_gl_get_glPixelTransformParameterivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPointParameterf"
+              c:identifier="gdk_gl_get_glPointParameterf">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPointParameterfARB"
+              c:identifier="gdk_gl_get_glPointParameterfARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPointParameterfEXT"
+              c:identifier="gdk_gl_get_glPointParameterfEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPointParameterfSGIS"
+              c:identifier="gdk_gl_get_glPointParameterfSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPointParameterfv"
+              c:identifier="gdk_gl_get_glPointParameterfv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPointParameterfvARB"
+              c:identifier="gdk_gl_get_glPointParameterfvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPointParameterfvEXT"
+              c:identifier="gdk_gl_get_glPointParameterfvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPointParameterfvSGIS"
+              c:identifier="gdk_gl_get_glPointParameterfvSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPointParameteri"
+              c:identifier="gdk_gl_get_glPointParameteri">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPointParameteriNV"
+              c:identifier="gdk_gl_get_glPointParameteriNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPointParameteriv"
+              c:identifier="gdk_gl_get_glPointParameteriv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPointParameterivNV"
+              c:identifier="gdk_gl_get_glPointParameterivNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPollAsyncSGIX"
+              c:identifier="gdk_gl_get_glPollAsyncSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPollInstrumentsSGIX"
+              c:identifier="gdk_gl_get_glPollInstrumentsSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPolygonOffsetEXT"
+              c:identifier="gdk_gl_get_glPolygonOffsetEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPrimitiveRestartIndexNV"
+              c:identifier="gdk_gl_get_glPrimitiveRestartIndexNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPrimitiveRestartNV"
+              c:identifier="gdk_gl_get_glPrimitiveRestartNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glPrioritizeTexturesEXT"
+              c:identifier="gdk_gl_get_glPrioritizeTexturesEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramEnvParameter4dARB"
+              c:identifier="gdk_gl_get_glProgramEnvParameter4dARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramEnvParameter4dvARB"
+              c:identifier="gdk_gl_get_glProgramEnvParameter4dvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramEnvParameter4fARB"
+              c:identifier="gdk_gl_get_glProgramEnvParameter4fARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramEnvParameter4fvARB"
+              c:identifier="gdk_gl_get_glProgramEnvParameter4fvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramLocalParameter4dARB"
+              c:identifier="gdk_gl_get_glProgramLocalParameter4dARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramLocalParameter4dvARB"
+              c:identifier="gdk_gl_get_glProgramLocalParameter4dvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramLocalParameter4fARB"
+              c:identifier="gdk_gl_get_glProgramLocalParameter4fARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramLocalParameter4fvARB"
+              c:identifier="gdk_gl_get_glProgramLocalParameter4fvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramNamedParameter4dNV"
+              c:identifier="gdk_gl_get_glProgramNamedParameter4dNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramNamedParameter4dvNV"
+              c:identifier="gdk_gl_get_glProgramNamedParameter4dvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramNamedParameter4fNV"
+              c:identifier="gdk_gl_get_glProgramNamedParameter4fNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramNamedParameter4fvNV"
+              c:identifier="gdk_gl_get_glProgramNamedParameter4fvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramParameter4dNV"
+              c:identifier="gdk_gl_get_glProgramParameter4dNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramParameter4dvNV"
+              c:identifier="gdk_gl_get_glProgramParameter4dvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramParameter4fNV"
+              c:identifier="gdk_gl_get_glProgramParameter4fNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramParameter4fvNV"
+              c:identifier="gdk_gl_get_glProgramParameter4fvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramParameters4dvNV"
+              c:identifier="gdk_gl_get_glProgramParameters4dvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramParameters4fvNV"
+              c:identifier="gdk_gl_get_glProgramParameters4fvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glProgramStringARB"
+              c:identifier="gdk_gl_get_glProgramStringARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReadBufferRegion"
+              c:identifier="gdk_gl_get_glReadBufferRegion">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReadInstrumentsSGIX"
+              c:identifier="gdk_gl_get_glReadInstrumentsSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReferencePlaneSGIX"
+              c:identifier="gdk_gl_get_glReferencePlaneSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodePointerSUN"
+              c:identifier="gdk_gl_get_glReplacementCodePointerSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeubSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeubSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeubvSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeubvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeuiColor3fVertex3fSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeuiColor3fVertex3fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeuiColor3fVertex3fvSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeuiColor3fVertex3fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeuiColor4fNormal3fVertex3fSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeuiColor4fNormal3fVertex3fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeuiColor4fNormal3fVertex3fvSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeuiColor4fNormal3fVertex3fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeuiColor4ubVertex3fSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeuiColor4ubVertex3fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeuiColor4ubVertex3fvSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeuiColor4ubVertex3fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeuiNormal3fVertex3fSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeuiNormal3fVertex3fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeuiNormal3fVertex3fvSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeuiNormal3fVertex3fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeuiSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeuiSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeuiTexCoord2fVertex3fSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeuiTexCoord2fVertex3fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeuiTexCoord2fVertex3fvSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeuiTexCoord2fVertex3fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeuiVertex3fSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeuiVertex3fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeuiVertex3fvSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeuiVertex3fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeuivSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeuivSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeusSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeusSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glReplacementCodeusvSUN"
+              c:identifier="gdk_gl_get_glReplacementCodeusvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glRequestResidentProgramsNV"
+              c:identifier="gdk_gl_get_glRequestResidentProgramsNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glResetHistogram"
+              c:identifier="gdk_gl_get_glResetHistogram">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glResetHistogramEXT"
+              c:identifier="gdk_gl_get_glResetHistogramEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glResetMinmax"
+              c:identifier="gdk_gl_get_glResetMinmax">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glResetMinmaxEXT"
+              c:identifier="gdk_gl_get_glResetMinmaxEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glResizeBuffersMESA"
+              c:identifier="gdk_gl_get_glResizeBuffersMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSampleCoverage"
+              c:identifier="gdk_gl_get_glSampleCoverage">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSampleCoverageARB"
+              c:identifier="gdk_gl_get_glSampleCoverageARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSampleMapATI"
+              c:identifier="gdk_gl_get_glSampleMapATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSampleMaskEXT"
+              c:identifier="gdk_gl_get_glSampleMaskEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSampleMaskSGIS"
+              c:identifier="gdk_gl_get_glSampleMaskSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSamplePatternEXT"
+              c:identifier="gdk_gl_get_glSamplePatternEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSamplePatternSGIS"
+              c:identifier="gdk_gl_get_glSamplePatternSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3b"
+              c:identifier="gdk_gl_get_glSecondaryColor3b">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3bEXT"
+              c:identifier="gdk_gl_get_glSecondaryColor3bEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3bv"
+              c:identifier="gdk_gl_get_glSecondaryColor3bv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3bvEXT"
+              c:identifier="gdk_gl_get_glSecondaryColor3bvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3d"
+              c:identifier="gdk_gl_get_glSecondaryColor3d">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3dEXT"
+              c:identifier="gdk_gl_get_glSecondaryColor3dEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3dv"
+              c:identifier="gdk_gl_get_glSecondaryColor3dv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3dvEXT"
+              c:identifier="gdk_gl_get_glSecondaryColor3dvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3f"
+              c:identifier="gdk_gl_get_glSecondaryColor3f">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3fEXT"
+              c:identifier="gdk_gl_get_glSecondaryColor3fEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3fv"
+              c:identifier="gdk_gl_get_glSecondaryColor3fv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3fvEXT"
+              c:identifier="gdk_gl_get_glSecondaryColor3fvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3hNV"
+              c:identifier="gdk_gl_get_glSecondaryColor3hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3hvNV"
+              c:identifier="gdk_gl_get_glSecondaryColor3hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3i"
+              c:identifier="gdk_gl_get_glSecondaryColor3i">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3iEXT"
+              c:identifier="gdk_gl_get_glSecondaryColor3iEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3iv"
+              c:identifier="gdk_gl_get_glSecondaryColor3iv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3ivEXT"
+              c:identifier="gdk_gl_get_glSecondaryColor3ivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3s"
+              c:identifier="gdk_gl_get_glSecondaryColor3s">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3sEXT"
+              c:identifier="gdk_gl_get_glSecondaryColor3sEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3sv"
+              c:identifier="gdk_gl_get_glSecondaryColor3sv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3svEXT"
+              c:identifier="gdk_gl_get_glSecondaryColor3svEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3ub"
+              c:identifier="gdk_gl_get_glSecondaryColor3ub">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3ubEXT"
+              c:identifier="gdk_gl_get_glSecondaryColor3ubEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3ubv"
+              c:identifier="gdk_gl_get_glSecondaryColor3ubv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3ubvEXT"
+              c:identifier="gdk_gl_get_glSecondaryColor3ubvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3ui"
+              c:identifier="gdk_gl_get_glSecondaryColor3ui">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3uiEXT"
+              c:identifier="gdk_gl_get_glSecondaryColor3uiEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3uiv"
+              c:identifier="gdk_gl_get_glSecondaryColor3uiv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3uivEXT"
+              c:identifier="gdk_gl_get_glSecondaryColor3uivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3us"
+              c:identifier="gdk_gl_get_glSecondaryColor3us">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3usEXT"
+              c:identifier="gdk_gl_get_glSecondaryColor3usEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3usv"
+              c:identifier="gdk_gl_get_glSecondaryColor3usv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColor3usvEXT"
+              c:identifier="gdk_gl_get_glSecondaryColor3usvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColorPointer"
+              c:identifier="gdk_gl_get_glSecondaryColorPointer">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColorPointerEXT"
+              c:identifier="gdk_gl_get_glSecondaryColorPointerEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSecondaryColorPointerListIBM"
+              c:identifier="gdk_gl_get_glSecondaryColorPointerListIBM">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSelectTextureCoordSetEXT"
+              c:identifier="gdk_gl_get_glSelectTextureCoordSetEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSelectTextureCoordSetSGIS"
+              c:identifier="gdk_gl_get_glSelectTextureCoordSetSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSelectTextureEXT"
+              c:identifier="gdk_gl_get_glSelectTextureEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSelectTextureSGIS"
+              c:identifier="gdk_gl_get_glSelectTextureSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSelectTextureTransformEXT"
+              c:identifier="gdk_gl_get_glSelectTextureTransformEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSeparableFilter2D"
+              c:identifier="gdk_gl_get_glSeparableFilter2D">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSeparableFilter2DEXT"
+              c:identifier="gdk_gl_get_glSeparableFilter2DEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSetFenceAPPLE"
+              c:identifier="gdk_gl_get_glSetFenceAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSetFenceNV"
+              c:identifier="gdk_gl_get_glSetFenceNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSetFragmentShaderConstantATI"
+              c:identifier="gdk_gl_get_glSetFragmentShaderConstantATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSetInvariantEXT"
+              c:identifier="gdk_gl_get_glSetInvariantEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSetLocalConstantEXT"
+              c:identifier="gdk_gl_get_glSetLocalConstantEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glShaderOp1EXT"
+              c:identifier="gdk_gl_get_glShaderOp1EXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glShaderOp2EXT"
+              c:identifier="gdk_gl_get_glShaderOp2EXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glShaderOp3EXT"
+              c:identifier="gdk_gl_get_glShaderOp3EXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSharpenTexFuncSGIS"
+              c:identifier="gdk_gl_get_glSharpenTexFuncSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSpriteParameterfSGIX"
+              c:identifier="gdk_gl_get_glSpriteParameterfSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSpriteParameterfvSGIX"
+              c:identifier="gdk_gl_get_glSpriteParameterfvSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSpriteParameteriSGIX"
+              c:identifier="gdk_gl_get_glSpriteParameteriSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSpriteParameterivSGIX"
+              c:identifier="gdk_gl_get_glSpriteParameterivSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glStartInstrumentsSGIX"
+              c:identifier="gdk_gl_get_glStartInstrumentsSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glStencilFuncSeparateATI"
+              c:identifier="gdk_gl_get_glStencilFuncSeparateATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glStencilOpSeparateATI"
+              c:identifier="gdk_gl_get_glStencilOpSeparateATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glStopInstrumentsSGIX"
+              c:identifier="gdk_gl_get_glStopInstrumentsSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glSwizzleEXT"
+              c:identifier="gdk_gl_get_glSwizzleEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTagSampleBufferSGIX"
+              c:identifier="gdk_gl_get_glTagSampleBufferSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTangent3bEXT"
+              c:identifier="gdk_gl_get_glTangent3bEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTangent3bvEXT"
+              c:identifier="gdk_gl_get_glTangent3bvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTangent3dEXT"
+              c:identifier="gdk_gl_get_glTangent3dEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTangent3dvEXT"
+              c:identifier="gdk_gl_get_glTangent3dvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTangent3fEXT"
+              c:identifier="gdk_gl_get_glTangent3fEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTangent3fvEXT"
+              c:identifier="gdk_gl_get_glTangent3fvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTangent3iEXT"
+              c:identifier="gdk_gl_get_glTangent3iEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTangent3ivEXT"
+              c:identifier="gdk_gl_get_glTangent3ivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTangent3sEXT"
+              c:identifier="gdk_gl_get_glTangent3sEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTangent3svEXT"
+              c:identifier="gdk_gl_get_glTangent3svEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTangentPointerEXT"
+              c:identifier="gdk_gl_get_glTangentPointerEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTbufferMask3DFX"
+              c:identifier="gdk_gl_get_glTbufferMask3DFX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTestFenceAPPLE"
+              c:identifier="gdk_gl_get_glTestFenceAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTestFenceNV"
+              c:identifier="gdk_gl_get_glTestFenceNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTestObjectAPPLE"
+              c:identifier="gdk_gl_get_glTestObjectAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexBumpParameterfvATI"
+              c:identifier="gdk_gl_get_glTexBumpParameterfvATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexBumpParameterivATI"
+              c:identifier="gdk_gl_get_glTexBumpParameterivATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord1hNV"
+              c:identifier="gdk_gl_get_glTexCoord1hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord1hvNV"
+              c:identifier="gdk_gl_get_glTexCoord1hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord2fColor3fVertex3fSUN"
+              c:identifier="gdk_gl_get_glTexCoord2fColor3fVertex3fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord2fColor3fVertex3fvSUN"
+              c:identifier="gdk_gl_get_glTexCoord2fColor3fVertex3fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord2fColor4fNormal3fVertex3fSUN"
+              c:identifier="gdk_gl_get_glTexCoord2fColor4fNormal3fVertex3fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord2fColor4fNormal3fVertex3fvSUN"
+              c:identifier="gdk_gl_get_glTexCoord2fColor4fNormal3fVertex3fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord2fColor4ubVertex3fSUN"
+              c:identifier="gdk_gl_get_glTexCoord2fColor4ubVertex3fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord2fColor4ubVertex3fvSUN"
+              c:identifier="gdk_gl_get_glTexCoord2fColor4ubVertex3fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord2fNormal3fVertex3fSUN"
+              c:identifier="gdk_gl_get_glTexCoord2fNormal3fVertex3fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord2fNormal3fVertex3fvSUN"
+              c:identifier="gdk_gl_get_glTexCoord2fNormal3fVertex3fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord2fVertex3fSUN"
+              c:identifier="gdk_gl_get_glTexCoord2fVertex3fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord2fVertex3fvSUN"
+              c:identifier="gdk_gl_get_glTexCoord2fVertex3fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord2hNV"
+              c:identifier="gdk_gl_get_glTexCoord2hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord2hvNV"
+              c:identifier="gdk_gl_get_glTexCoord2hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord3hNV"
+              c:identifier="gdk_gl_get_glTexCoord3hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord3hvNV"
+              c:identifier="gdk_gl_get_glTexCoord3hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord4fColor4fNormal3fVertex4fSUN"
+              c:identifier="gdk_gl_get_glTexCoord4fColor4fNormal3fVertex4fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord4fColor4fNormal3fVertex4fvSUN"
+              c:identifier="gdk_gl_get_glTexCoord4fColor4fNormal3fVertex4fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord4fVertex4fSUN"
+              c:identifier="gdk_gl_get_glTexCoord4fVertex4fSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord4fVertex4fvSUN"
+              c:identifier="gdk_gl_get_glTexCoord4fVertex4fvSUN">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord4hNV"
+              c:identifier="gdk_gl_get_glTexCoord4hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoord4hvNV"
+              c:identifier="gdk_gl_get_glTexCoord4hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoordPointerEXT"
+              c:identifier="gdk_gl_get_glTexCoordPointerEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoordPointerListIBM"
+              c:identifier="gdk_gl_get_glTexCoordPointerListIBM">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexCoordPointervINTEL"
+              c:identifier="gdk_gl_get_glTexCoordPointervINTEL">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexFilterFuncSGIS"
+              c:identifier="gdk_gl_get_glTexFilterFuncSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexImage3D"
+              c:identifier="gdk_gl_get_glTexImage3D">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexImage3DEXT"
+              c:identifier="gdk_gl_get_glTexImage3DEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexImage4DSGIS"
+              c:identifier="gdk_gl_get_glTexImage4DSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexSubImage1DEXT"
+              c:identifier="gdk_gl_get_glTexSubImage1DEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexSubImage2DEXT"
+              c:identifier="gdk_gl_get_glTexSubImage2DEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexSubImage3D"
+              c:identifier="gdk_gl_get_glTexSubImage3D">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexSubImage3DEXT"
+              c:identifier="gdk_gl_get_glTexSubImage3DEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTexSubImage4DSGIS"
+              c:identifier="gdk_gl_get_glTexSubImage4DSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTextureColorMaskSGIS"
+              c:identifier="gdk_gl_get_glTextureColorMaskSGIS">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTextureFogSGIX"
+              c:identifier="gdk_gl_get_glTextureFogSGIX">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTextureLightEXT"
+              c:identifier="gdk_gl_get_glTextureLightEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTextureMaterialEXT"
+              c:identifier="gdk_gl_get_glTextureMaterialEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTextureNormalEXT"
+              c:identifier="gdk_gl_get_glTextureNormalEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTextureRangeAPPLE"
+              c:identifier="gdk_gl_get_glTextureRangeAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glTrackMatrixNV"
+              c:identifier="gdk_gl_get_glTrackMatrixNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glUnlockArraysEXT"
+              c:identifier="gdk_gl_get_glUnlockArraysEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glUnmapBufferARB"
+              c:identifier="gdk_gl_get_glUnmapBufferARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glUnmapObjectBufferATI"
+              c:identifier="gdk_gl_get_glUnmapObjectBufferATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glUpdateObjectBufferATI"
+              c:identifier="gdk_gl_get_glUpdateObjectBufferATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glValidBackBufferHint"
+              c:identifier="gdk_gl_get_glValidBackBufferHint">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVariantArrayObjectATI"
+              c:identifier="gdk_gl_get_glVariantArrayObjectATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVariantPointerEXT"
+              c:identifier="gdk_gl_get_glVariantPointerEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVariantbvEXT"
+              c:identifier="gdk_gl_get_glVariantbvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVariantdvEXT"
+              c:identifier="gdk_gl_get_glVariantdvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVariantfvEXT"
+              c:identifier="gdk_gl_get_glVariantfvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVariantivEXT"
+              c:identifier="gdk_gl_get_glVariantivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVariantsvEXT"
+              c:identifier="gdk_gl_get_glVariantsvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVariantubvEXT"
+              c:identifier="gdk_gl_get_glVariantubvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVariantuivEXT"
+              c:identifier="gdk_gl_get_glVariantuivEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVariantusvEXT"
+              c:identifier="gdk_gl_get_glVariantusvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertex2hNV"
+              c:identifier="gdk_gl_get_glVertex2hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertex2hvNV"
+              c:identifier="gdk_gl_get_glVertex2hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertex3hNV"
+              c:identifier="gdk_gl_get_glVertex3hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertex3hvNV"
+              c:identifier="gdk_gl_get_glVertex3hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertex4hNV"
+              c:identifier="gdk_gl_get_glVertex4hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertex4hvNV"
+              c:identifier="gdk_gl_get_glVertex4hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexArrayParameteriAPPLE"
+              c:identifier="gdk_gl_get_glVertexArrayParameteriAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexArrayRangeAPPLE"
+              c:identifier="gdk_gl_get_glVertexArrayRangeAPPLE">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexArrayRangeNV"
+              c:identifier="gdk_gl_get_glVertexArrayRangeNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib1dARB"
+              c:identifier="gdk_gl_get_glVertexAttrib1dARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib1dNV"
+              c:identifier="gdk_gl_get_glVertexAttrib1dNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib1dvARB"
+              c:identifier="gdk_gl_get_glVertexAttrib1dvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib1dvNV"
+              c:identifier="gdk_gl_get_glVertexAttrib1dvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib1fARB"
+              c:identifier="gdk_gl_get_glVertexAttrib1fARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib1fNV"
+              c:identifier="gdk_gl_get_glVertexAttrib1fNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib1fvARB"
+              c:identifier="gdk_gl_get_glVertexAttrib1fvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib1fvNV"
+              c:identifier="gdk_gl_get_glVertexAttrib1fvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib1hNV"
+              c:identifier="gdk_gl_get_glVertexAttrib1hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib1hvNV"
+              c:identifier="gdk_gl_get_glVertexAttrib1hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib1sARB"
+              c:identifier="gdk_gl_get_glVertexAttrib1sARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib1sNV"
+              c:identifier="gdk_gl_get_glVertexAttrib1sNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib1svARB"
+              c:identifier="gdk_gl_get_glVertexAttrib1svARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib1svNV"
+              c:identifier="gdk_gl_get_glVertexAttrib1svNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib2dARB"
+              c:identifier="gdk_gl_get_glVertexAttrib2dARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib2dNV"
+              c:identifier="gdk_gl_get_glVertexAttrib2dNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib2dvARB"
+              c:identifier="gdk_gl_get_glVertexAttrib2dvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib2dvNV"
+              c:identifier="gdk_gl_get_glVertexAttrib2dvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib2fARB"
+              c:identifier="gdk_gl_get_glVertexAttrib2fARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib2fNV"
+              c:identifier="gdk_gl_get_glVertexAttrib2fNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib2fvARB"
+              c:identifier="gdk_gl_get_glVertexAttrib2fvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib2fvNV"
+              c:identifier="gdk_gl_get_glVertexAttrib2fvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib2hNV"
+              c:identifier="gdk_gl_get_glVertexAttrib2hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib2hvNV"
+              c:identifier="gdk_gl_get_glVertexAttrib2hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib2sARB"
+              c:identifier="gdk_gl_get_glVertexAttrib2sARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib2sNV"
+              c:identifier="gdk_gl_get_glVertexAttrib2sNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib2svARB"
+              c:identifier="gdk_gl_get_glVertexAttrib2svARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib2svNV"
+              c:identifier="gdk_gl_get_glVertexAttrib2svNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib3dARB"
+              c:identifier="gdk_gl_get_glVertexAttrib3dARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib3dNV"
+              c:identifier="gdk_gl_get_glVertexAttrib3dNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib3dvARB"
+              c:identifier="gdk_gl_get_glVertexAttrib3dvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib3dvNV"
+              c:identifier="gdk_gl_get_glVertexAttrib3dvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib3fARB"
+              c:identifier="gdk_gl_get_glVertexAttrib3fARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib3fNV"
+              c:identifier="gdk_gl_get_glVertexAttrib3fNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib3fvARB"
+              c:identifier="gdk_gl_get_glVertexAttrib3fvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib3fvNV"
+              c:identifier="gdk_gl_get_glVertexAttrib3fvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib3hNV"
+              c:identifier="gdk_gl_get_glVertexAttrib3hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib3hvNV"
+              c:identifier="gdk_gl_get_glVertexAttrib3hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib3sARB"
+              c:identifier="gdk_gl_get_glVertexAttrib3sARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib3sNV"
+              c:identifier="gdk_gl_get_glVertexAttrib3sNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib3svARB"
+              c:identifier="gdk_gl_get_glVertexAttrib3svARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib3svNV"
+              c:identifier="gdk_gl_get_glVertexAttrib3svNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4NbvARB"
+              c:identifier="gdk_gl_get_glVertexAttrib4NbvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4NivARB"
+              c:identifier="gdk_gl_get_glVertexAttrib4NivARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4NsvARB"
+              c:identifier="gdk_gl_get_glVertexAttrib4NsvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4NubARB"
+              c:identifier="gdk_gl_get_glVertexAttrib4NubARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4NubvARB"
+              c:identifier="gdk_gl_get_glVertexAttrib4NubvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4NuivARB"
+              c:identifier="gdk_gl_get_glVertexAttrib4NuivARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4NusvARB"
+              c:identifier="gdk_gl_get_glVertexAttrib4NusvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4bvARB"
+              c:identifier="gdk_gl_get_glVertexAttrib4bvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4dARB"
+              c:identifier="gdk_gl_get_glVertexAttrib4dARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4dNV"
+              c:identifier="gdk_gl_get_glVertexAttrib4dNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4dvARB"
+              c:identifier="gdk_gl_get_glVertexAttrib4dvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4dvNV"
+              c:identifier="gdk_gl_get_glVertexAttrib4dvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4fARB"
+              c:identifier="gdk_gl_get_glVertexAttrib4fARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4fNV"
+              c:identifier="gdk_gl_get_glVertexAttrib4fNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4fvARB"
+              c:identifier="gdk_gl_get_glVertexAttrib4fvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4fvNV"
+              c:identifier="gdk_gl_get_glVertexAttrib4fvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4hNV"
+              c:identifier="gdk_gl_get_glVertexAttrib4hNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4hvNV"
+              c:identifier="gdk_gl_get_glVertexAttrib4hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4ivARB"
+              c:identifier="gdk_gl_get_glVertexAttrib4ivARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4sARB"
+              c:identifier="gdk_gl_get_glVertexAttrib4sARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4sNV"
+              c:identifier="gdk_gl_get_glVertexAttrib4sNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4svARB"
+              c:identifier="gdk_gl_get_glVertexAttrib4svARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4svNV"
+              c:identifier="gdk_gl_get_glVertexAttrib4svNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4ubNV"
+              c:identifier="gdk_gl_get_glVertexAttrib4ubNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4ubvARB"
+              c:identifier="gdk_gl_get_glVertexAttrib4ubvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4ubvNV"
+              c:identifier="gdk_gl_get_glVertexAttrib4ubvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4uivARB"
+              c:identifier="gdk_gl_get_glVertexAttrib4uivARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttrib4usvARB"
+              c:identifier="gdk_gl_get_glVertexAttrib4usvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribArrayObjectATI"
+              c:identifier="gdk_gl_get_glVertexAttribArrayObjectATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribPointerARB"
+              c:identifier="gdk_gl_get_glVertexAttribPointerARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribPointerNV"
+              c:identifier="gdk_gl_get_glVertexAttribPointerNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribs1dvNV"
+              c:identifier="gdk_gl_get_glVertexAttribs1dvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribs1fvNV"
+              c:identifier="gdk_gl_get_glVertexAttribs1fvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribs1hvNV"
+              c:identifier="gdk_gl_get_glVertexAttribs1hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribs1svNV"
+              c:identifier="gdk_gl_get_glVertexAttribs1svNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribs2dvNV"
+              c:identifier="gdk_gl_get_glVertexAttribs2dvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribs2fvNV"
+              c:identifier="gdk_gl_get_glVertexAttribs2fvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribs2hvNV"
+              c:identifier="gdk_gl_get_glVertexAttribs2hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribs2svNV"
+              c:identifier="gdk_gl_get_glVertexAttribs2svNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribs3dvNV"
+              c:identifier="gdk_gl_get_glVertexAttribs3dvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribs3fvNV"
+              c:identifier="gdk_gl_get_glVertexAttribs3fvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribs3hvNV"
+              c:identifier="gdk_gl_get_glVertexAttribs3hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribs3svNV"
+              c:identifier="gdk_gl_get_glVertexAttribs3svNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribs4dvNV"
+              c:identifier="gdk_gl_get_glVertexAttribs4dvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribs4fvNV"
+              c:identifier="gdk_gl_get_glVertexAttribs4fvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribs4hvNV"
+              c:identifier="gdk_gl_get_glVertexAttribs4hvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribs4svNV"
+              c:identifier="gdk_gl_get_glVertexAttribs4svNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexAttribs4ubvNV"
+              c:identifier="gdk_gl_get_glVertexAttribs4ubvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexBlendARB"
+              c:identifier="gdk_gl_get_glVertexBlendARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexBlendEnvfATI"
+              c:identifier="gdk_gl_get_glVertexBlendEnvfATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexBlendEnviATI"
+              c:identifier="gdk_gl_get_glVertexBlendEnviATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexPointerEXT"
+              c:identifier="gdk_gl_get_glVertexPointerEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexPointerListIBM"
+              c:identifier="gdk_gl_get_glVertexPointerListIBM">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexPointervINTEL"
+              c:identifier="gdk_gl_get_glVertexPointervINTEL">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream1dATI"
+              c:identifier="gdk_gl_get_glVertexStream1dATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream1dvATI"
+              c:identifier="gdk_gl_get_glVertexStream1dvATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream1fATI"
+              c:identifier="gdk_gl_get_glVertexStream1fATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream1fvATI"
+              c:identifier="gdk_gl_get_glVertexStream1fvATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream1iATI"
+              c:identifier="gdk_gl_get_glVertexStream1iATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream1ivATI"
+              c:identifier="gdk_gl_get_glVertexStream1ivATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream1sATI"
+              c:identifier="gdk_gl_get_glVertexStream1sATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream1svATI"
+              c:identifier="gdk_gl_get_glVertexStream1svATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream2dATI"
+              c:identifier="gdk_gl_get_glVertexStream2dATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream2dvATI"
+              c:identifier="gdk_gl_get_glVertexStream2dvATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream2fATI"
+              c:identifier="gdk_gl_get_glVertexStream2fATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream2fvATI"
+              c:identifier="gdk_gl_get_glVertexStream2fvATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream2iATI"
+              c:identifier="gdk_gl_get_glVertexStream2iATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream2ivATI"
+              c:identifier="gdk_gl_get_glVertexStream2ivATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream2sATI"
+              c:identifier="gdk_gl_get_glVertexStream2sATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream2svATI"
+              c:identifier="gdk_gl_get_glVertexStream2svATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream3dATI"
+              c:identifier="gdk_gl_get_glVertexStream3dATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream3dvATI"
+              c:identifier="gdk_gl_get_glVertexStream3dvATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream3fATI"
+              c:identifier="gdk_gl_get_glVertexStream3fATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream3fvATI"
+              c:identifier="gdk_gl_get_glVertexStream3fvATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream3iATI"
+              c:identifier="gdk_gl_get_glVertexStream3iATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream3ivATI"
+              c:identifier="gdk_gl_get_glVertexStream3ivATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream3sATI"
+              c:identifier="gdk_gl_get_glVertexStream3sATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream3svATI"
+              c:identifier="gdk_gl_get_glVertexStream3svATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream4dATI"
+              c:identifier="gdk_gl_get_glVertexStream4dATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream4dvATI"
+              c:identifier="gdk_gl_get_glVertexStream4dvATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream4fATI"
+              c:identifier="gdk_gl_get_glVertexStream4fATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream4fvATI"
+              c:identifier="gdk_gl_get_glVertexStream4fvATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream4iATI"
+              c:identifier="gdk_gl_get_glVertexStream4iATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream4ivATI"
+              c:identifier="gdk_gl_get_glVertexStream4ivATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream4sATI"
+              c:identifier="gdk_gl_get_glVertexStream4sATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexStream4svATI"
+              c:identifier="gdk_gl_get_glVertexStream4svATI">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexWeightPointerEXT"
+              c:identifier="gdk_gl_get_glVertexWeightPointerEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexWeightfEXT"
+              c:identifier="gdk_gl_get_glVertexWeightfEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexWeightfvEXT"
+              c:identifier="gdk_gl_get_glVertexWeightfvEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexWeighthNV"
+              c:identifier="gdk_gl_get_glVertexWeighthNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glVertexWeighthvNV"
+              c:identifier="gdk_gl_get_glVertexWeighthvNV">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWeightPointerARB"
+              c:identifier="gdk_gl_get_glWeightPointerARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWeightbvARB"
+              c:identifier="gdk_gl_get_glWeightbvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWeightdvARB"
+              c:identifier="gdk_gl_get_glWeightdvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWeightfvARB"
+              c:identifier="gdk_gl_get_glWeightfvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWeightivARB"
+              c:identifier="gdk_gl_get_glWeightivARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWeightsvARB"
+              c:identifier="gdk_gl_get_glWeightsvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWeightubvARB"
+              c:identifier="gdk_gl_get_glWeightubvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWeightuivARB"
+              c:identifier="gdk_gl_get_glWeightuivARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWeightusvARB"
+              c:identifier="gdk_gl_get_glWeightusvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowBackBufferHint"
+              c:identifier="gdk_gl_get_glWindowBackBufferHint">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2d"
+              c:identifier="gdk_gl_get_glWindowPos2d">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2dARB"
+              c:identifier="gdk_gl_get_glWindowPos2dARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2dMESA"
+              c:identifier="gdk_gl_get_glWindowPos2dMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2dv"
+              c:identifier="gdk_gl_get_glWindowPos2dv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2dvARB"
+              c:identifier="gdk_gl_get_glWindowPos2dvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2dvMESA"
+              c:identifier="gdk_gl_get_glWindowPos2dvMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2f"
+              c:identifier="gdk_gl_get_glWindowPos2f">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2fARB"
+              c:identifier="gdk_gl_get_glWindowPos2fARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2fMESA"
+              c:identifier="gdk_gl_get_glWindowPos2fMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2fv"
+              c:identifier="gdk_gl_get_glWindowPos2fv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2fvARB"
+              c:identifier="gdk_gl_get_glWindowPos2fvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2fvMESA"
+              c:identifier="gdk_gl_get_glWindowPos2fvMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2i"
+              c:identifier="gdk_gl_get_glWindowPos2i">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2iARB"
+              c:identifier="gdk_gl_get_glWindowPos2iARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2iMESA"
+              c:identifier="gdk_gl_get_glWindowPos2iMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2iv"
+              c:identifier="gdk_gl_get_glWindowPos2iv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2ivARB"
+              c:identifier="gdk_gl_get_glWindowPos2ivARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2ivMESA"
+              c:identifier="gdk_gl_get_glWindowPos2ivMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2s"
+              c:identifier="gdk_gl_get_glWindowPos2s">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2sARB"
+              c:identifier="gdk_gl_get_glWindowPos2sARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2sMESA"
+              c:identifier="gdk_gl_get_glWindowPos2sMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2sv"
+              c:identifier="gdk_gl_get_glWindowPos2sv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2svARB"
+              c:identifier="gdk_gl_get_glWindowPos2svARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos2svMESA"
+              c:identifier="gdk_gl_get_glWindowPos2svMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3d"
+              c:identifier="gdk_gl_get_glWindowPos3d">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3dARB"
+              c:identifier="gdk_gl_get_glWindowPos3dARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3dMESA"
+              c:identifier="gdk_gl_get_glWindowPos3dMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3dv"
+              c:identifier="gdk_gl_get_glWindowPos3dv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3dvARB"
+              c:identifier="gdk_gl_get_glWindowPos3dvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3dvMESA"
+              c:identifier="gdk_gl_get_glWindowPos3dvMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3f"
+              c:identifier="gdk_gl_get_glWindowPos3f">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3fARB"
+              c:identifier="gdk_gl_get_glWindowPos3fARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3fMESA"
+              c:identifier="gdk_gl_get_glWindowPos3fMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3fv"
+              c:identifier="gdk_gl_get_glWindowPos3fv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3fvARB"
+              c:identifier="gdk_gl_get_glWindowPos3fvARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3fvMESA"
+              c:identifier="gdk_gl_get_glWindowPos3fvMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3i"
+              c:identifier="gdk_gl_get_glWindowPos3i">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3iARB"
+              c:identifier="gdk_gl_get_glWindowPos3iARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3iMESA"
+              c:identifier="gdk_gl_get_glWindowPos3iMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3iv"
+              c:identifier="gdk_gl_get_glWindowPos3iv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3ivARB"
+              c:identifier="gdk_gl_get_glWindowPos3ivARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3ivMESA"
+              c:identifier="gdk_gl_get_glWindowPos3ivMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3s"
+              c:identifier="gdk_gl_get_glWindowPos3s">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3sARB"
+              c:identifier="gdk_gl_get_glWindowPos3sARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3sMESA"
+              c:identifier="gdk_gl_get_glWindowPos3sMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3sv"
+              c:identifier="gdk_gl_get_glWindowPos3sv">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3svARB"
+              c:identifier="gdk_gl_get_glWindowPos3svARB">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos3svMESA"
+              c:identifier="gdk_gl_get_glWindowPos3svMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos4dMESA"
+              c:identifier="gdk_gl_get_glWindowPos4dMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos4dvMESA"
+              c:identifier="gdk_gl_get_glWindowPos4dvMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos4fMESA"
+              c:identifier="gdk_gl_get_glWindowPos4fMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos4fvMESA"
+              c:identifier="gdk_gl_get_glWindowPos4fvMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos4iMESA"
+              c:identifier="gdk_gl_get_glWindowPos4iMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos4ivMESA"
+              c:identifier="gdk_gl_get_glWindowPos4ivMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos4sMESA"
+              c:identifier="gdk_gl_get_glWindowPos4sMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWindowPos4svMESA"
+              c:identifier="gdk_gl_get_glWindowPos4svMESA">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_glWriteMaskEXT"
+              c:identifier="gdk_gl_get_glWriteMaskEXT">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+    </function>
+    <function name="gl_get_proc_address"
+              c:identifier="gdk_gl_get_proc_address">
+      <return-value transfer-ownership="full">
+        <type name="GLProc" c:type="GdkGLProc"/>
+      </return-value>
+      <parameters>
+        <parameter name="proc_name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gl_init" c:identifier="gdk_gl_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </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>
+    <function name="gl_init_check" c:identifier="gdk_gl_init_check">
+      <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>
+    <function name="gl_parse_args" c:identifier="gdk_gl_parse_args">
+      <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>
+    <function name="gl_query_extension" c:identifier="gdk_gl_query_extension">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="gl_query_gl_extension"
+              c:identifier="gdk_gl_query_gl_extension">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="extension" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gl_query_version" c:identifier="gdk_gl_query_version">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="major" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="minor" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixmap_get_gl_pixmap"
+              c:identifier="gdk_pixmap_get_gl_pixmap">
+      <return-value transfer-ownership="full">
+        <type name="GLPixmap" c:type="GdkGLPixmap*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixmap" transfer-ownership="none">
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixmap_is_gl_capable"
+              c:identifier="gdk_pixmap_is_gl_capable">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixmap" transfer-ownership="none">
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixmap_set_gl_capability"
+              c:identifier="gdk_pixmap_set_gl_capability">
+      <return-value transfer-ownership="full">
+        <type name="GLPixmap" c:type="GdkGLPixmap*"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixmap" transfer-ownership="none">
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </parameter>
+        <parameter name="glconfig" transfer-ownership="none">
+          <type name="GLConfig" c:type="GdkGLConfig*"/>
+        </parameter>
+        <parameter name="attrib_list"
+                   direction="out"
+                   transfer-ownership="none">
+          <type name="int" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pixmap_unset_gl_capability"
+              c:identifier="gdk_pixmap_unset_gl_capability">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pixmap" transfer-ownership="none">
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="window_get_gl_window"
+              c:identifier="gdk_window_get_gl_window">
+      <return-value transfer-ownership="full">
+        <type name="GLWindow" c:type="GdkGLWindow*"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="window_is_gl_capable"
+              c:identifier="gdk_window_is_gl_capable">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="window_set_gl_capability"
+              c:identifier="gdk_window_set_gl_capability">
+      <return-value transfer-ownership="full">
+        <type name="GLWindow" c:type="GdkGLWindow*"/>
+      </return-value>
+      <parameters>
+        <parameter name="window" transfer-ownership="none">
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </parameter>
+        <parameter name="glconfig" transfer-ownership="none">
+          <type name="GLConfig" c:type="GdkGLConfig*"/>
+        </parameter>
+        <parameter name="attrib_list"
+                   direction="out"
+                   transfer-ownership="none">
+          <type name="int" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="window_unset_gl_capability"
+              c:identifier="gdk_window_unset_gl_capability">
+      <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>
+      </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/gl.factor b/basis/gdk/gl/gl.factor
new file mode 100644 (file)
index 0000000..09d86d2
--- /dev/null
@@ -0,0 +1,19 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien.c-types alien.libraries alien.syntax combinators kernel system vocabs.parser words
+gir glib gobject gio gmodule gdk gdk.ffi gdk.pixbuf ;
+
+<<
+"gdk.gl" {
+    { [ os winnt? ] [ "" "cdecl" add-library ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgdkglext-x11-1.0.so" "cdecl" add-library ] }
+} cond
+>>
+
+IN: gdk.gl.ffi
+
+<< ulong "unsigned long" current-vocab create typedef >>
+
+IN-GIR: gdk.gl vocab:gdk/gl/GdkGL-1.0.gir
+
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..4c73110
--- /dev/null
@@ -0,0 +1,2523 @@
+<?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="Gio" version="2.0"/>
+  <namespace name="GdkPixbuf"
+             version="2.0"
+             shared-library="libgdk_pixbuf-2.0.so.0"
+             c:prefix="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>
+    <constant name="FEATURES_H" value="1">
+      <type name="int"/>
+    </constant>
+    <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="MAGIC_NUMBER" value="1197763408">
+      <type name="int"/>
+    </constant>
+    <constant name="MAJOR" value="2">
+      <type name="int"/>
+    </constant>
+    <constant name="MICRO" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="MINOR" value="20">
+      <type name="int"/>
+    </constant>
+    <constant name="PIXDATA_HEADER_LENGTH" value="24">
+      <type name="int"/>
+    </constant>
+    <class name="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="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.">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="colorspace" transfer-ownership="none">
+            <type name="Colorspace" c:type="GdkColorspace"/>
+          </parameter>
+          <parameter name="has_alpha" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="bits_per_sample" 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>
+      </constructor>
+      <constructor name="new_subpixbuf"
+                   c:identifier="gdk_pixbuf_new_subpixbuf"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_pixbuf" transfer-ownership="none">
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+          <parameter name="src_x" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="src_y" 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>
+      </constructor>
+      <constructor name="new_from_file"
+                   c:identifier="gdk_pixbuf_new_from_file"
+                   doc="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&apos;s format, there was not enough memory to
+allocate the image buffer, or the image file contained invalid data."
+                   throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_file_at_size"
+                   c:identifier="gdk_pixbuf_new_from_file_at_size"
+                   doc="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&apos;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().
+be opened, there was no loader for the file&apos;s format, there was not
+enough memory to allocate the image buffer, or the image file contained
+invalid data."
+                   version="2.4"
+                   throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </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>
+      </constructor>
+      <constructor name="new_from_file_at_scale"
+                   c:identifier="gdk_pixbuf_new_from_file_at_scale"
+                   doc="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&apos;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&apos;s format, there was not enough memory to
+allocate the image buffer, or the image file contained invalid data."
+                   version="2.6"
+                   throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </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="preserve_aspect_ratio" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_data"
+                   c:identifier="gdk_pixbuf_new_from_data"
+                   doc="drops to zero, or %NULL if the data should not be freed
+Creates a new #GdkPixbuf out of in-memory image data.  Currently only RGB
+images with 8 bits per sample are supported.">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="colorspace" transfer-ownership="none">
+            <type name="Colorspace" c:type="GdkColorspace"/>
+          </parameter>
+          <parameter name="has_alpha" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="bits_per_sample" 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>
+          <parameter name="rowstride" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="destroy_fn"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="8">
+            <type name="PixbufDestroyNotify" c:type="GdkPixbufDestroyNotify"/>
+          </parameter>
+          <parameter name="destroy_fn_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_xpm_data"
+                   c:identifier="gdk_pixbuf_new_from_xpm_data"
+                   doc="Creates a new pixbuf by parsing XPM data in memory.  This data is commonly
+the result of including an XPM file into a program&apos;s C source.">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_inline"
+                   c:identifier="gdk_pixbuf_new_from_inline"
+                   doc="disable length checks
+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&apos;t want to depend on any
+external files.
+GTK+ 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&apos;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&apos;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."
+                   throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data_length" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="copy_pixels" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_stream"
+                   c:identifier="gdk_pixbuf_new_from_stream"
+                   doc="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."
+                   version="2.14"
+                   throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stream" transfer-ownership="none">
+            <type name="Gio.InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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"
+                   doc="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&apos;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."
+                   version="2.14"
+                   throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stream" transfer-ownership="none">
+            <type name="Gio.InputStream" c:type="GInputStream*"/>
+          </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>
+          <parameter name="preserve_aspect_ratio" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Gio.Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="get_formats"
+                c:identifier="gdk_pixbuf_get_formats"
+                doc="Obtains the available information about the image formats supported
+by GdkPixbuf.
+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."
+                version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="GLib.SList" c:type="GSList*"/>
+        </return-value>
+      </function>
+      <function name="get_file_info"
+                c:identifier="gdk_pixbuf_get_file_info"
+                doc="Parses an image file far enough to determine its format and size.
+or %NULL if the image format wasn&apos;t recognized. The return value
+is owned by GdkPixbuf and should not be freed."
+                version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="PixbufFormat" c:type="GdkPixbufFormat*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </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="from_pixdata"
+                c:identifier="gdk_pixbuf_from_pixdata"
+                doc="pixel data is always copied.
+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."
+                throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixdata" transfer-ownership="none">
+            <type name="Pixdata" c:type="GdkPixdata*"/>
+          </parameter>
+          <parameter name="copy_pixels" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="ref"
+              c:identifier="gdk_pixbuf_ref"
+              doc="Adds a reference to a pixbuf."
+              deprecated="Use g_object_ref()."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gdk_pixbuf_unref"
+              doc="Removes a reference from a pixbuf."
+              deprecated="Use g_object_unref()."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_colorspace"
+              c:identifier="gdk_pixbuf_get_colorspace"
+              doc="Queries the color space of a pixbuf.">
+        <return-value transfer-ownership="full">
+          <type name="Colorspace" c:type="GdkColorspace"/>
+        </return-value>
+      </method>
+      <method name="get_n_channels"
+              c:identifier="gdk_pixbuf_get_n_channels"
+              doc="Queries the number of channels of a pixbuf.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_has_alpha"
+              c:identifier="gdk_pixbuf_get_has_alpha"
+              doc="Queries whether a pixbuf has an alpha channel (opacity information).">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_bits_per_sample"
+              c:identifier="gdk_pixbuf_get_bits_per_sample"
+              doc="Queries the number of bits per color sample in a pixbuf.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_pixels"
+              c:identifier="gdk_pixbuf_get_pixels"
+              doc="Queries a pointer to the pixel data of a pixbuf.
+for information about how the pixel data is stored in
+memory.">
+        <return-value transfer-ownership="full">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_width"
+              c:identifier="gdk_pixbuf_get_width"
+              doc="Queries the width of a pixbuf.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_height"
+              c:identifier="gdk_pixbuf_get_height"
+              doc="Queries the height of a pixbuf.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_rowstride"
+              c:identifier="gdk_pixbuf_get_rowstride"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="gdk_pixbuf_copy"
+              doc="Creates a new #GdkPixbuf with a copy of the information in the specified
+not enough memory could be allocated.">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="fill"
+              c:identifier="gdk_pixbuf_fill"
+              doc="(0xffffffff is opaque white, 0x00000000 transparent black)
+Clears a pixbuf to the given RGBA value, converting the RGBA value into
+the pixbuf&apos;s pixel format. The alpha will be ignored if the pixbuf
+doesn&apos;t have an alpha channel.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixel" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="save"
+              c:identifier="gdk_pixbuf_save"
+              doc="Saves pixbuf to a file in format @type. By default, &quot;jpeg&quot;, &quot;png&quot;, &quot;ico&quot;
+and &quot;bmp&quot; 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, &quot;jpeg&quot;, &amp;amp;error,
+&quot;quality&quot;, &quot;100&quot;, NULL);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+Currently only few parameters exist. JPEG images can be saved with a
+&quot;quality&quot; parameter; its value should be in the range [0,100].
+Text chunks can be attached to PNG images by specifying parameters of
+the form &quot;tEXt::key&quot;, 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 &quot;compression&quot; parameter; it&apos;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 &quot;icc-profile&quot; 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 (&quot;/home/hughsie/.color/icc/L225W.icm&quot;, &amp;contents, &amp;length, NULL);
+contents_encode = g_base64_encode ((const guchar *) contents, length);
+gdk_pixbuf_save (pixbuf, handle, &quot;png&quot;, &amp;amp;error,
+&quot;icc-profile&quot;, contents_encode,
+NULL);
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+TIFF images recognize a &quot;compression&quot; 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 &quot;depth&quot;
+parameter. When the ICO saver is given &quot;x_hot&quot; and &quot;y_hot&quot; parameters,
+it produces a CUR instead of an ICO.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="error"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="return location for error, or %NULL">
+            <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"
+              doc="Saves pixbuf to a file in @type, which is currently &quot;jpeg&quot;, &quot;png&quot;, &quot;tiff&quot;, &quot;ico&quot; or &quot;bmp&quot;.
+If @error is set, %FALSE will be returned.
+See gdk_pixbuf_save () for more details."
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="option_keys" transfer-ownership="none">
+            <array c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="option_values" transfer-ownership="none">
+            <array c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="save_to_callback"
+              c:identifier="gdk_pixbuf_save_to_callback"
+              doc="the save routine generates.
+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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="save_func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="PixbufSaveFunc" c:type="GdkPixbufSaveFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="error"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="return location for error, or %NULL">
+            <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"
+              doc="the save routine generates.
+Saves pixbuf to a callback in format @type, which is currently &quot;jpeg&quot;,
+&quot;png&quot;, &quot;tiff&quot;, &quot;ico&quot; or &quot;bmp&quot;.  If @error is set, %FALSE will be returned. See
+gdk_pixbuf_save_to_callback () for more details."
+              version="2.4"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="save_func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="PixbufSaveFunc" c:type="GdkPixbufSaveFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="option_keys" transfer-ownership="none">
+            <array c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="option_values" transfer-ownership="none">
+            <array c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="save_to_buffer"
+              c:identifier="gdk_pixbuf_save_to_buffer"
+              doc="Saves pixbuf to a new buffer in format @type, which is currently &quot;jpeg&quot;,
+&quot;png&quot;, &quot;tiff&quot;, &quot;ico&quot; or &quot;bmp&quot;.  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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="buffer_size"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="error"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="return location for error, or %NULL">
+            <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"
+              doc="Saves pixbuf to a new buffer in format @type, which is currently &quot;jpeg&quot;,
+&quot;tiff&quot;, &quot;png&quot;, &quot;ico&quot; or &quot;bmp&quot;.  See gdk_pixbuf_save_to_buffer()
+for more details."
+              version="2.4"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="buffer_size"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="option_keys" transfer-ownership="none">
+            <array c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="option_values" transfer-ownership="none">
+            <array c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="save_to_stream" c:identifier="gdk_pixbuf_save_to_stream">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="add_alpha"
+              c:identifier="gdk_pixbuf_add_alpha"
+              doc="is %FALSE, then the (@r, @g, @b) arguments will be ignored.
+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.">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="substitute_color" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="r" transfer-ownership="none">
+            <type name="uint8" c:type="guchar"/>
+          </parameter>
+          <parameter name="g" transfer-ownership="none">
+            <type name="uint8" c:type="guchar"/>
+          </parameter>
+          <parameter name="b" transfer-ownership="none">
+            <type name="uint8" c:type="guchar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy_area"
+              c:identifier="gdk_pixbuf_copy_area"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="src_x" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="src_y" 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>
+          <parameter name="dest_pixbuf" transfer-ownership="none">
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+          <parameter name="dest_x" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="dest_y" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="saturate_and_pixelate"
+              c:identifier="gdk_pixbuf_saturate_and_pixelate"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+          <parameter name="saturation" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="pixelate" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="apply_embedded_orientation"
+              c:identifier="gdk_pixbuf_apply_embedded_orientation"
+              doc="Takes an existing pixbuf and checks for the presence of an
+associated &quot;orientation&quot; 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)."
+              version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="get_option"
+              c:identifier="gdk_pixbuf_get_option"
+              doc="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 &quot;Title&quot; and &quot;Artist&quot; options.
+The ICO, XBM, and XPM loaders provide &quot;x_hot&quot; and &quot;y_hot&quot; 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 &quot;orientation&quot; 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.">
+        <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="scale"
+              c:identifier="gdk_pixbuf_scale"
+              doc="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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+          <parameter name="dest_x" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="dest_y" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="dest_width" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="dest_height" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="offset_x" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="offset_y" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="scale_x" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="interp_type" transfer-ownership="none">
+            <type name="InterpType" c:type="GdkInterpType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="composite"
+              c:identifier="gdk_pixbuf_composite"
+              doc="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=&quot;pixbuf-composite-diagram&quot;&gt;
+&lt;title&gt;Compositing of pixbufs&lt;/title&gt;
+&lt;graphic fileref=&quot;composite.png&quot; format=&quot;PNG&quot;/&gt;
+&lt;/figure&gt;">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+          <parameter name="dest_x" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="dest_y" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="dest_width" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="dest_height" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="offset_x" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="offset_y" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="scale_x" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="interp_type" transfer-ownership="none">
+            <type name="InterpType" c:type="GdkInterpType"/>
+          </parameter>
+          <parameter name="overall_alpha" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="composite_color"
+              c:identifier="gdk_pixbuf_composite_color"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+          <parameter name="dest_x" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="dest_y" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="dest_width" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="dest_height" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="offset_x" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="offset_y" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="scale_x" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="interp_type" transfer-ownership="none">
+            <type name="InterpType" c:type="GdkInterpType"/>
+          </parameter>
+          <parameter name="overall_alpha" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="check_x" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="check_y" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="check_size" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="color1" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="color2" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scale_simple"
+              c:identifier="gdk_pixbuf_scale_simple"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest_width" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="dest_height" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="interp_type" transfer-ownership="none">
+            <type name="InterpType" c:type="GdkInterpType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="composite_color_simple"
+              c:identifier="gdk_pixbuf_composite_color_simple"
+              doc="Creates a new #GdkPixbuf by scaling @src to @dest_width x
+allocated for it.">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest_width" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="dest_height" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="interp_type" transfer-ownership="none">
+            <type name="InterpType" c:type="GdkInterpType"/>
+          </parameter>
+          <parameter name="overall_alpha" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="check_size" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="color1" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="color2" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rotate_simple"
+              c:identifier="gdk_pixbuf_rotate_simple"
+              doc="Rotates a pixbuf by a multiple of 90 degrees, and returns the
+result in a new pixbuf.
+allocated for it."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle" transfer-ownership="none">
+            <type name="PixbufRotation" c:type="GdkPixbufRotation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flip"
+              c:identifier="gdk_pixbuf_flip"
+              doc="Flips a pixbuf horizontally or vertically and returns the
+result in a new pixbuf.
+allocated for it."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="horizontal" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_option"
+              c:identifier="gdk_pixbuf_set_option"
+              doc="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."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="bits-per-sample"
+                writable="1"
+                construct-only="1"
+                doc="The number of bits per sample.
+Currently only 8 bit per sample are supported.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="colorspace" writable="1" construct-only="1">
+        <type name="Colorspace" c:type="GdkColorspace"/>
+      </property>
+      <property name="has-alpha" writable="1" construct-only="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="height" writable="1" construct-only="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="n-channels"
+                writable="1"
+                construct-only="1"
+                doc="The number of samples per pixel.
+Currently, only 3 or 4 samples per pixel are supported.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="pixels" writable="1" construct-only="1">
+        <type name="any" c:type="gpointer"/>
+      </property>
+      <property name="rowstride"
+                writable="1"
+                construct-only="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="width" writable="1" construct-only="1">
+        <type name="int" c:type="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: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"
+                   doc="Creates a new animation by loading it from a file.  The file format is
+detected automatically.  If the file&apos;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&apos;s format, there was not enough memory to
+allocate the image buffer, or the image file contained invalid data."
+                   throws="1">
+        <return-value transfer-ownership="full">
+          <type name="PixbufAnimation" c:type="GdkPixbufAnimation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="is_static_image" invoker="is_static_image">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_static_image" invoker="get_static_image">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_size">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </virtual-method>
+      <virtual-method name="get_iter" invoker="get_iter">
+        <return-value transfer-ownership="full">
+          <type name="PixbufAnimationIter" c:type="GdkPixbufAnimationIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_time" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="ref"
+              c:identifier="gdk_pixbuf_animation_ref"
+              doc="Adds a reference to an animation."
+              deprecated="Use g_object_ref()."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="full">
+          <type name="PixbufAnimation" c:type="GdkPixbufAnimation*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gdk_pixbuf_animation_unref"
+              doc="Removes a reference from an animation."
+              deprecated="Use g_object_unref()."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_width"
+              c:identifier="gdk_pixbuf_animation_get_width"
+              doc="Queries the width of the bounding box of a pixbuf animation.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_height"
+              c:identifier="gdk_pixbuf_animation_get_height"
+              doc="Queries the height of the bounding box of a pixbuf animation.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="is_static_image"
+              c:identifier="gdk_pixbuf_animation_is_static_image"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_static_image"
+              c:identifier="gdk_pixbuf_animation_get_static_image"
+              doc="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&apos;t loaded any frames yet, this
+function will return %NULL.">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="get_iter"
+              c:identifier="gdk_pixbuf_animation_get_iter"
+              doc="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&apos;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&apos;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 &quot;infinite.&quot;">
+        <return-value transfer-ownership="full">
+          <type name="PixbufAnimationIter" c:type="GdkPixbufAnimationIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_time" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </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" c:type="is_static_image">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="get_static_image">
+          <return-value transfer-ownership="full">
+            <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" c:type="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" 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>
+        </callback>
+      </field>
+      <field name="get_iter">
+        <callback name="get_iter" c:type="get_iter">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="PixbufAnimationIter"
+           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="get_delay_time" invoker="get_delay_time">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_pixbuf" invoker="get_pixbuf">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="on_currently_loading_frame"
+                      invoker="on_currently_loading_frame">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="advance" invoker="advance">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="current_time" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_delay_time"
+              c:identifier="gdk_pixbuf_animation_iter_get_delay_time"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_pixbuf"
+              c:identifier="gdk_pixbuf_animation_iter_get_pixbuf"
+              doc="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&apos;t just add a reference), as it may get recycled as you advance
+the iterator.">
+        <return-value transfer-ownership="full">
+          <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="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&apos;re on the currently loading frame, you need to redraw the screen for
+the updated area.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="advance"
+              c:identifier="gdk_pixbuf_animation_iter_advance"
+              doc="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&apos;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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="current_time" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </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" c:type="get_delay_time">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="get_pixbuf">
+          <return-value transfer-ownership="full">
+            <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"
+                  c:type="on_currently_loading_frame">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="advance">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <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">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" 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">
+      <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="uint32" c:type="guint32"/>
+      </field>
+      <field name="disabled" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="license" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <method name="get_name"
+              c:identifier="gdk_pixbuf_format_get_name"
+              doc="Returns the name of the format."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_description"
+              c:identifier="gdk_pixbuf_format_get_description"
+              doc="Returns a description of the format."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_mime_types"
+              c:identifier="gdk_pixbuf_format_get_mime_types"
+              doc="Returns the mime types supported by the format.
+g_strfreev() when it is no longer needed."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_extensions"
+              c:identifier="gdk_pixbuf_format_get_extensions"
+              doc="Returns the filename extensions typically used for files in the
+given format.
+freed with g_strfreev() when it is no longer needed."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="is_writable"
+              c:identifier="gdk_pixbuf_format_is_writable"
+              doc="Returns whether pixbufs can be saved in the given format."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_scalable"
+              c:identifier="gdk_pixbuf_format_is_scalable"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_disabled"
+              c:identifier="gdk_pixbuf_format_is_disabled"
+              doc="Returns whether this image format is disabled. See
+gdk_pixbuf_format_set_disabled()."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_disabled"
+              c:identifier="gdk_pixbuf_format_set_disabled"
+              doc="Disables or enables an image format. If a format is disabled,
+gdk-pixbuf won&apos;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()."
+              version="2.6">
+        <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="get_license"
+              c:identifier="gdk_pixbuf_format_get_license"
+              doc="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. &quot;LGPL&quot;,
+&quot;GPL&quot;, &quot;QPL&quot;, &quot;GPL/QPL&quot;, or &quot;other&quot; to indicate some other license.  This
+string should be freed with g_free() when it&apos;s no longer needed."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </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: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="Creates a new pixbuf loader object.">
+        <return-value transfer-ownership="full">
+          <type name="PixbufLoader" c:type="GdkPixbufLoader*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_type"
+                   c:identifier="gdk_pixbuf_loader_new_with_type"
+                   doc="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&apos;t the expected type, for loading image formats
+that can&apos;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 &quot;png&quot;, &quot;jpeg&quot;, &quot;gif&quot;, &quot;tiff&quot; and
+&quot;xpm&quot; 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()."
+                   throws="1">
+        <return-value transfer-ownership="full">
+          <type name="PixbufLoader" c:type="GdkPixbufLoader*"/>
+        </return-value>
+        <parameters>
+          <parameter name="image_type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_mime_type"
+                   c:identifier="gdk_pixbuf_loader_new_with_mime_type"
+                   doc="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&apos;t the expected mime type, for loading image formats
+that can&apos;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 &quot;image/png&quot;, &quot;image/jpeg&quot;, &quot;image/gif&quot;,
+&quot;image/tiff&quot; and &quot;image/x-xpixmap&quot; 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()."
+                   version="2.4"
+                   throws="1">
+        <return-value transfer-ownership="full">
+          <type name="PixbufLoader" c:type="GdkPixbufLoader*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mime_type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_size"
+              c:identifier="gdk_pixbuf_loader_set_size"
+              doc="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."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="write"
+              c:identifier="gdk_pixbuf_loader_write"
+              doc="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."
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buf" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixbuf"
+              c:identifier="gdk_pixbuf_loader_get_pixbuf"
+              doc="Queries the #GdkPixbuf that a pixbuf loader is currently creating.
+In general it only makes sense to call this function after the
+&quot;area-prepared&quot; 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 &quot;static image&quot; of the animation
+(see gdk_pixbuf_animation_get_static_image()).
+enough data has been read to determine how to create the image buffer.">
+        <return-value transfer-ownership="full">
+          <type name="Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="get_animation"
+              c:identifier="gdk_pixbuf_loader_get_animation"
+              doc="Queries the #GdkPixbufAnimation that a pixbuf loader is currently creating.
+In general it only makes sense to call this function after the &quot;area-prepared&quot;
+signal has been emitted by the loader. If the loader doesn&apos;t have enough
+bytes yet (hasn&apos;t emitted the &quot;area-prepared&quot; signal) this function will
+return %NULL.
+t enough data has been read to determine the information.">
+        <return-value transfer-ownership="full">
+          <type name="PixbufAnimation" c:type="GdkPixbufAnimation*"/>
+        </return-value>
+      </method>
+      <method name="close"
+              c:identifier="gdk_pixbuf_loader_close"
+              doc="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&apos;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&apos;re just cancelling a load rather than expecting it
+to be finished, passing %NULL for @error to ignore it is
+reasonable.
+ssed out via the update_area signal"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_format"
+              c:identifier="gdk_pixbuf_loader_get_format"
+              doc="Obtains the available information about the format of the
+currently loading image file.
+by GdkPixbuf and should not be freed."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="PixbufFormat" c:type="GdkPixbufFormat*"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <glib:signal name="area-prepared"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="area-updated"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <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>
+      </glib:signal>
+      <glib:signal name="closed"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="size-prepared"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </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" c:type="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="int" c:type="int"/>
+            </parameter>
+            <parameter name="height" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="area_prepared">
+        <callback name="area_prepared" c:type="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" c:type="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="int" c:type="int"/>
+            </parameter>
+            <parameter name="y" 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>
+        </callback>
+      </field>
+      <field name="closed">
+        <callback name="closed" c:type="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>
+    </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="int" 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="any" 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" 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>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" 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="int" c:type="int"/>
+        </parameter>
+        <parameter name="y" 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>
+        <parameter name="user_data" transfer-ownership="none" closure="5">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="PixbufNonAnim"
+           c:type="GdkPixbufNonAnim"
+           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="PixbufNonAnim" 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="boolean" 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="size_t" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="PixbufSimpleAnim"
+           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"
+                   doc="Creates a new, empty animation."
+                   version="2.8">
+        <return-value transfer-ownership="full">
+          <type name="PixbufSimpleAnim" c:type="GdkPixbufSimpleAnim*"/>
+        </return-value>
+        <parameters>
+          <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>
+          <parameter name="rate" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_frame"
+              c:identifier="gdk_pixbuf_simple_anim_add_frame"
+              doc="Adds a new frame to @animation. The @pixbuf must
+have the dimensions specified when the animation
+was constructed."
+              version="2.8">
+        <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>
+        </parameters>
+      </method>
+      <method name="set_loop"
+              c:identifier="gdk_pixbuf_simple_anim_set_loop"
+              doc="Sets whether @animation should loop indefinitely when it reaches the end."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="loop" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_loop"
+              c:identifier="gdk_pixbuf_simple_anim_get_loop"
+              doc="Gets whether @animation should loop indefinitely when it reaches the end."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="loop"
+                version="2.18"
+                writable="1"
+                doc="Whether the animation should loop when it reaches the end.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+    </class>
+    <record name="PixbufSimpleAnimClass"
+            c:type="GdkPixbufSimpleAnimClass"
+            glib:is-gtype-struct-for="PixbufSimpleAnim">
+    </record>
+    <class name="PixbufSimpleAnimIter"
+           c:type="GdkPixbufSimpleAnimIter"
+           parent="PixbufAnimationIter"
+           glib:type-name="GdkPixbufSimpleAnimIter"
+           glib:get-type="gdk_pixbuf_simple_anim_iter_get_type">
+    </class>
+    <record name="Pixdata"
+            c:type="GdkPixdata"
+            doc="#GDK_PIXBUF_MAGIC_NUMBER here.
+#GDK_PIXDATA_HEADER_LENGTH + length of @pixel_data.
+encoding, in a #GdkPixdataType.
+and @rowstride.
+A #GdkPixdata contains pixbuf information in a form suitable for
+serialization and streaming.">
+      <field name="magic" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="length" writable="1">
+        <type name="int32" c:type="gint32"/>
+      </field>
+      <field name="pixdata_type" writable="1">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="rowstride" 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="pixel_data" writable="1">
+        <type name="any" c:type="guint8*"/>
+      </field>
+      <method name="serialize"
+              c:identifier="gdk_pixdata_serialize"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="stream_length_p"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="deserialize"
+              c:identifier="gdk_pixdata_deserialize"
+              doc="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."
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="stream_length" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="stream" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="from_pixbuf"
+              c:identifier="gdk_pixdata_from_pixbuf"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <type name="Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+          <parameter name="use_rle" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_csource"
+              c:identifier="gdk_pixdata_to_csource"
+              doc="source to be generated.
+Generates C source code suitable for compiling images directly
+into programs.
+GTK+ 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.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.String" c:type="GString*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="dump_type" transfer-ownership="none">
+            <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"
+              doc="and an alpha value.
+be up to 127 bytes long; their length is stored in a single byte
+preceding the pixel data for the run. If a run is constant, its length
+byte has the high bit set and the pixel data consists of a single pixel
+which must be repeated.
+An enumeration containing three sets of flags for a #GdkPixdata struct:
+one for the used colorspace, one for the width of the samples and one
+for the encoding of the pixel data."
+              c:type="GdkPixdataType">
+      <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>
+    <constant name="VERSION" value="2.20.1">
+      <type name="utf8"/>
+    </constant>
+  </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/pixbuf.factor b/basis/gdk/pixbuf/pixbuf.factor
new file mode 100644 (file)
index 0000000..d9550bd
--- /dev/null
@@ -0,0 +1,6 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gir glib gobject gio gmodule ;
+
+IN-GIR: gdk.pixbuf vocab:gdk/pixbuf/GdkPixbuf-2.0.gir
+
diff --git a/basis/gio/Gio-2.0.gir b/basis/gio/Gio-2.0.gir
new file mode 100644 (file)
index 0000000..273e6f0
--- /dev/null
@@ -0,0 +1,23740 @@
+<?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="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:prefix="g">
+    <interface name="AppInfo"
+               c:type="GAppInfo"
+               doc="Information about an installed application and methods to launch
+it (with file arguments)."
+               glib:type-name="GAppInfo"
+               glib:get-type="g_app_info_get_type"
+               glib:type-struct="AppInfoIface">
+      <virtual-method name="dup" invoker="dup">
+        <return-value transfer-ownership="full">
+          <type name="AppInfo" c:type="GAppInfo*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="equal" invoker="equal">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="appinfo2" transfer-ownership="none">
+            <type name="AppInfo" c:type="GAppInfo*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_id" invoker="get_id">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_name" invoker="get_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_description" invoker="get_description">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_executable" invoker="get_executable">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_icon" invoker="get_icon">
+        <return-value transfer-ownership="full">
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="launch" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filenames" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+          <parameter name="launch_context" transfer-ownership="none">
+            <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="supports_uris" invoker="supports_uris">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="supports_files" invoker="supports_files">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="launch_uris" invoker="launch_uris" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uris" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+          <parameter name="launch_context" transfer-ownership="none">
+            <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="should_show" invoker="should_show">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_as_default_for_type"
+                      invoker="set_as_default_for_type"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="content_type" transfer-ownership="none">
+            <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">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="extension" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="add_supports_type"
+                      invoker="add_supports_type"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="content_type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="can_remove_supports_type"
+                      invoker="can_remove_supports_type">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="remove_supports_type"
+                      invoker="remove_supports_type"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="content_type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="can_delete" invoker="can_delete">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="do_delete">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_commandline" invoker="get_commandline">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_display_name" invoker="get_display_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <method name="dup" c:identifier="g_app_info_dup">
+        <return-value transfer-ownership="full">
+          <type name="AppInfo" c:type="GAppInfo*"/>
+        </return-value>
+      </method>
+      <method name="equal" c:identifier="g_app_info_equal">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="appinfo2" transfer-ownership="none">
+            <type name="AppInfo" c:type="GAppInfo*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_id" c:identifier="g_app_info_get_id">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="g_app_info_get_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_display_name"
+              c:identifier="g_app_info_get_display_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_description" c:identifier="g_app_info_get_description">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_executable" c:identifier="g_app_info_get_executable">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_commandline" c:identifier="g_app_info_get_commandline">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_icon" c:identifier="g_app_info_get_icon">
+        <return-value transfer-ownership="none">
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="launch" c:identifier="g_app_info_launch" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="files" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*">
+              <type name="File"/>
+            </type>
+          </parameter>
+          <parameter name="launch_context"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="supports_uris" c:identifier="g_app_info_supports_uris">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="supports_files" c:identifier="g_app_info_supports_files">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="launch_uris"
+              c:identifier="g_app_info_launch_uris"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uris" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*">
+              <type name="utf8"/>
+            </type>
+          </parameter>
+          <parameter name="launch_context"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="should_show" c:identifier="g_app_info_should_show">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_as_default_for_type"
+              c:identifier="g_app_info_set_as_default_for_type"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="content_type" transfer-ownership="none">
+            <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">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="extension" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_supports_type"
+              c:identifier="g_app_info_add_supports_type"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="content_type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_remove_supports_type"
+              c:identifier="g_app_info_can_remove_supports_type">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="remove_supports_type"
+              c:identifier="g_app_info_remove_supports_type"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="content_type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_delete" c:identifier="g_app_info_can_delete">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="delete" c:identifier="g_app_info_delete">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </interface>
+    <bitfield name="AppInfoCreateFlags"
+              doc="Flags used when creating a #GAppInfo."
+              glib:type-name="GAppInfoCreateFlags"
+              glib:get-type="g_app_info_create_flags_get_type"
+              c:type="GAppInfoCreateFlags">
+      <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"/>
+    </bitfield>
+    <record name="AppInfoIface"
+            c:type="GAppInfoIface"
+            glib:is-gtype-struct-for="AppInfo"
+            doc="&lt;ulink url=&quot;http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt&quot;&gt;
+&lt;citetitle&gt;FreeDesktop.Org Startup Notification Specification&lt;/citetitle&gt;&lt;/ulink&gt;.
+Application Information interface, for operating system portability.">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="dup">
+        <callback name="dup" c:type="dup">
+          <return-value transfer-ownership="full">
+            <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" c:type="equal">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_id">
+        <callback name="get_id" c:type="get_id">
+          <return-value transfer-ownership="none">
+            <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" c:type="get_name">
+          <return-value transfer-ownership="none">
+            <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" c:type="get_description">
+          <return-value transfer-ownership="none">
+            <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" c:type="get_executable">
+          <return-value transfer-ownership="none">
+            <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" c:type="get_icon">
+          <return-value transfer-ownership="full">
+            <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" c:type="launch" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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*"/>
+            </parameter>
+            <parameter name="launch_context" transfer-ownership="none">
+              <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="supports_uris">
+        <callback name="supports_uris" c:type="supports_uris">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="supports_files">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="launch_uris" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="GLib.List" c:type="GList*"/>
+            </parameter>
+            <parameter name="launch_context" transfer-ownership="none">
+              <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="should_show">
+        <callback name="should_show" c:type="should_show">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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"
+                  c:type="set_as_default_for_type"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_as_default_for_extension">
+        <callback name="set_as_default_for_extension"
+                  c:type="set_as_default_for_extension"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_supports_type">
+        <callback name="add_supports_type"
+                  c:type="add_supports_type"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_remove_supports_type">
+        <callback name="can_remove_supports_type"
+                  c:type="can_remove_supports_type">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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"
+                  c:type="remove_supports_type"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_delete">
+        <callback name="can_delete" c:type="can_delete">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="do_delete">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="get_commandline">
+          <return-value transfer-ownership="none">
+            <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" c:type="get_display_name">
+          <return-value transfer-ownership="none">
+            <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:type="GAppLaunchContext"
+           doc="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."
+           parent="GObject.Object"
+           glib:type-name="GAppLaunchContext"
+           glib:get-type="g_app_launch_context_get_type"
+           glib:type-struct="AppLaunchContextClass">
+      <constructor name="new" c:identifier="g_app_launch_context_new">
+        <return-value transfer-ownership="full">
+          <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="get_display" invoker="get_display">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <type name="AppInfo" c:type="GAppInfo*"/>
+          </parameter>
+          <parameter name="files" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_startup_notify_id"
+                      invoker="get_startup_notify_id">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <type name="AppInfo" c:type="GAppInfo*"/>
+          </parameter>
+          <parameter name="files" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="launch_failed" invoker="launch_failed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="startup_notify_id" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_display"
+              c:identifier="g_app_launch_context_get_display">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <type name="AppInfo" c:type="GAppInfo*"/>
+          </parameter>
+          <parameter name="files" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_startup_notify_id"
+              c:identifier="g_app_launch_context_get_startup_notify_id">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <type name="AppInfo" c:type="GAppInfo*"/>
+          </parameter>
+          <parameter name="files" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="launch_failed"
+              c:identifier="g_app_launch_context_launch_failed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="startup_notify_id" transfer-ownership="none">
+            <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" c:type="get_display">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+            <parameter name="files" transfer-ownership="none">
+              <type name="GLib.List" c:type="GList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_startup_notify_id">
+        <callback name="get_startup_notify_id" c:type="get_startup_notify_id">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="AppInfo" c:type="GAppInfo*"/>
+            </parameter>
+            <parameter name="files" transfer-ownership="none">
+              <type name="GLib.List" c:type="GList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="launch_failed">
+        <callback name="launch_failed" c:type="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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="g_reserved1">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="AppLaunchContextPrivate" c:type="GAppLaunchContextPrivate">
+    </record>
+    <bitfield name="AskPasswordFlags"
+              doc="#GAskPasswordFlags are used to request specific information from the
+user, or to notify the user of their choices in an authentication
+situation."
+              glib:type-name="GAskPasswordFlags"
+              glib:get-type="g_ask_password_flags_get_type"
+              c:type="GAskPasswordFlags">
+      <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:type="GAsyncInitable"
+               doc="Interface for asynchronously initializable objects."
+               version="2.22"
+               glib:type-name="GAsyncInitable"
+               glib:get-type="g_async_initable_get_type"
+               glib:type-struct="AsyncInitableIface">
+      <virtual-method name="init_async" invoker="init_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="init_finish" invoker="init_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="init_async" c:identifier="g_async_initable_init_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_finish"
+              c:identifier="g_async_initable_init_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="new_finish"
+              c:identifier="g_async_initable_new_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="AsyncInitableIface"
+            c:type="GAsyncInitableIface"
+            glib:is-gtype-struct-for="AsyncInitable"
+            doc="Provides an interface for asynchronous initializing object such that
+initialization may fail."
+            version="2.22">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="init_async">
+        <callback name="init_async" c:type="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">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="init_finish">
+        <callback name="init_finish" c:type="init_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <callback name="AsyncReadyCallback"
+              c:type="GAsyncReadyCallback"
+              doc="Type definition for a function that will be called back when an asynchronous
+operation within GIO has been completed.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="source_object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="res" transfer-ownership="none">
+          <type name="AsyncResult" c:type="GAsyncResult*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <interface name="AsyncResult"
+               c:type="GAsyncResult"
+               doc="Holds results information for an asynchronous operation,
+usually passed directly to a asynchronous _finish() operation."
+               glib:type-name="GAsyncResult"
+               glib:get-type="g_async_result_get_type"
+               glib:type-struct="AsyncResultIface">
+      <virtual-method name="get_user_data" invoker="get_user_data">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_source_object" invoker="get_source_object">
+        <return-value transfer-ownership="full">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_user_data" c:identifier="g_async_result_get_user_data">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="get_source_object"
+              c:identifier="g_async_result_get_source_object">
+        <return-value transfer-ownership="full">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="AsyncResultIface"
+            c:type="GAsyncResultIface"
+            glib:is-gtype-struct-for="AsyncResult"
+            doc="Interface definition for #GAsyncResult.">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_user_data">
+        <callback name="get_user_data" c:type="get_user_data">
+          <return-value transfer-ownership="none">
+            <type name="any" 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" c:type="get_source_object">
+          <return-value transfer-ownership="full">
+            <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:type="GBufferedInputStream"
+           doc="Implements #GFilterInputStream with a sized input buffer."
+           parent="FilterInputStream"
+           glib:type-name="GBufferedInputStream"
+           glib:get-type="g_buffered_input_stream_get_type"
+           glib:type-struct="BufferedInputStreamClass">
+      <constructor name="new" c:identifier="g_buffered_input_stream_new">
+        <return-value transfer-ownership="full">
+          <type name="BufferedInputStream" c:type="GInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="base_stream" transfer-ownership="none">
+            <type name="InputStream" c:type="GInputStream*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_sized"
+                   c:identifier="g_buffered_input_stream_new_sized">
+        <return-value transfer-ownership="full">
+          <type name="BufferedInputStream" c:type="GInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="base_stream" transfer-ownership="none">
+            <type name="InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="fill" invoker="fill" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="fill_async" invoker="fill_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="fill_finish" invoker="fill_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_buffer_size"
+              c:identifier="g_buffered_input_stream_get_buffer_size">
+        <return-value transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="set_buffer_size"
+              c:identifier="g_buffered_input_stream_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="size_t" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_available"
+              c:identifier="g_buffered_input_stream_get_available">
+        <return-value transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="peek" c:identifier="g_buffered_input_stream_peek">
+        <return-value transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_buffer"
+              c:identifier="g_buffered_input_stream_peek_buffer">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="void*"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" direction="out" transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fill"
+              c:identifier="g_buffered_input_stream_fill"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fill_async"
+              c:identifier="g_buffered_input_stream_fill_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fill_finish"
+              c:identifier="g_buffered_input_stream_fill_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_byte"
+              c:identifier="g_buffered_input_stream_read_byte"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="buffer-size" writable="1" construct="1">
+        <type name="uint" c:type="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" c:type="fill" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="ssize_t" 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">
+              <type name="ssize_t" c:type="gssize"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="fill_async">
+        <callback name="fill_async" c:type="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">
+              <type name="ssize_t" c:type="gssize"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="fill_finish">
+        <callback name="fill_finish" c:type="fill_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="ssize_t" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="g_reserved1">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="BufferedInputStreamPrivate"
+            c:type="GBufferedInputStreamPrivate">
+    </record>
+    <class name="BufferedOutputStream"
+           c:type="GBufferedOutputStream"
+           doc="An implementation of #GFilterOutputStream with a sized buffer."
+           parent="FilterOutputStream"
+           glib:type-name="GBufferedOutputStream"
+           glib:get-type="g_buffered_output_stream_get_type"
+           glib:type-struct="BufferedOutputStreamClass">
+      <constructor name="new" c:identifier="g_buffered_output_stream_new">
+        <return-value transfer-ownership="full">
+          <type name="BufferedOutputStream" c:type="GOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="base_stream" transfer-ownership="none">
+            <type name="OutputStream" c:type="GOutputStream*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_sized"
+                   c:identifier="g_buffered_output_stream_new_sized">
+        <return-value transfer-ownership="full">
+          <type name="BufferedOutputStream" c:type="GOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="base_stream" transfer-ownership="none">
+            <type name="OutputStream" c:type="GOutputStream*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_buffer_size"
+              c:identifier="g_buffered_output_stream_get_buffer_size">
+        <return-value transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="set_buffer_size"
+              c:identifier="g_buffered_output_stream_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="size_t" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_auto_grow"
+              c:identifier="g_buffered_output_stream_get_auto_grow">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_auto_grow"
+              c:identifier="g_buffered_output_stream_set_auto_grow">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="auto_grow" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="auto-grow" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="buffer-size" writable="1" construct="1">
+        <type name="uint" c:type="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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="BufferedOutputStreamPrivate"
+            c:type="GBufferedOutputStreamPrivate">
+    </record>
+    <class name="Cancellable"
+           c:type="GCancellable"
+           doc="Allows actions to be cancelled."
+           parent="GObject.Object"
+           glib:type-name="GCancellable"
+           glib:get-type="g_cancellable_get_type"
+           glib:type-struct="CancellableClass">
+      <constructor name="new" c:identifier="g_cancellable_new">
+        <return-value transfer-ownership="full">
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </return-value>
+      </constructor>
+      <function name="get_current" c:identifier="g_cancellable_get_current">
+        <return-value transfer-ownership="full">
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </return-value>
+      </function>
+      <method name="is_cancelled" c:identifier="g_cancellable_is_cancelled">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_error_if_cancelled"
+              c:identifier="g_cancellable_set_error_if_cancelled"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_fd" c:identifier="g_cancellable_get_fd">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="make_pollfd" c:identifier="g_cancellable_make_pollfd">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pollfd" transfer-ownership="none">
+            <type name="GLib.PollFD" c:type="GPollFD*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="release_fd" c:identifier="g_cancellable_release_fd">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="push_current" c:identifier="g_cancellable_push_current">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="pop_current" c:identifier="g_cancellable_pop_current">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="reset" c:identifier="g_cancellable_reset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="connect" c:identifier="g_cancellable_connect">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     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="data_destroy_func"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="disconnect" c:identifier="g_cancellable_disconnect">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handler_id" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="cancel" c:identifier="g_cancellable_cancel">
+        <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="CancellablePrivate" c:type="GCancellablePrivate*"/>
+      </field>
+      <glib:signal name="cancelled">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="cancelled">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="g_reserved1">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="CancellablePrivate" c:type="GCancellablePrivate">
+    </record>
+    <class name="CharsetConverter"
+           c:type="GCharsetConverter"
+           parent="GObject.Object"
+           glib:type-name="GCharsetConverter"
+           glib:get-type="g_charset_converter_get_type"
+           glib:type-struct="CharsetConverterClass">
+      <implements name="Converter"/>
+      <implements name="Initable"/>
+      <constructor name="new"
+                   c:identifier="g_charset_converter_new"
+                   throws="1">
+        <return-value transfer-ownership="full">
+          <type name="CharsetConverter" c:type="GCharsetConverter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="to_charset" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="from_charset" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_use_fallback"
+              c:identifier="g_charset_converter_set_use_fallback">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_fallback" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_fallback"
+              c:identifier="g_charset_converter_get_use_fallback">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_num_fallbacks"
+              c:identifier="g_charset_converter_get_num_fallbacks">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <property name="from-charset" writable="1" construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="to-charset" writable="1" construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="use-fallback" writable="1" construct="1">
+        <type name="boolean" c:type="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:type="GConverter"
+               doc="Seek object for streaming operations."
+               version="2.24"
+               glib:type-name="GConverter"
+               glib:get-type="g_converter_get_type"
+               glib:type-struct="ConverterIface">
+      <virtual-method name="convert" invoker="convert" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="ConverterResult" c:type="GConverterResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="inbuf" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+          <parameter name="inbuf_size" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="outbuf" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+          <parameter name="outbuf_size" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="ConverterFlags" c:type="GConverterFlags"/>
+          </parameter>
+          <parameter name="bytes_read"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+          <parameter name="bytes_written"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="reset" invoker="reset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="convert" c:identifier="g_converter_convert" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="ConverterResult" c:type="GConverterResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="inbuf" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+          <parameter name="inbuf_size" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="outbuf" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+          <parameter name="outbuf_size" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="ConverterFlags" c:type="GConverterFlags"/>
+          </parameter>
+          <parameter name="bytes_read"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+          <parameter name="bytes_written"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reset" c:identifier="g_converter_reset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </interface>
+    <bitfield name="ConverterFlags"
+              doc="Flags used when calling a g_converter_convert()."
+              version="2.24"
+              glib:type-name="GConverterFlags"
+              glib:get-type="g_converter_flags_get_type"
+              c:type="GConverterFlags">
+      <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"
+            doc="Provides an interface for converting data from one type
+to another type. The conversion can be stateful
+and may fail at any place."
+            version="2.24">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="convert">
+        <callback name="convert" c:type="convert" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="any" c:type="void*"/>
+            </parameter>
+            <parameter name="inbuf_size" transfer-ownership="none">
+              <type name="size_t" c:type="gsize"/>
+            </parameter>
+            <parameter name="outbuf" transfer-ownership="none">
+              <type name="any" c:type="void*"/>
+            </parameter>
+            <parameter name="outbuf_size" transfer-ownership="none">
+              <type name="size_t" c:type="gsize"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="ConverterFlags" c:type="GConverterFlags"/>
+            </parameter>
+            <parameter name="bytes_read"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="size_t" c:type="gsize*"/>
+            </parameter>
+            <parameter name="bytes_written"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="size_t" c:type="gsize*"/>
+            </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="converter" transfer-ownership="none">
+              <type name="Converter" c:type="GConverter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="ConverterInputStream"
+           c:type="GConverterInputStream"
+           doc="An implementation of #GFilterInputStream that allows data
+conversion."
+           parent="FilterInputStream"
+           glib:type-name="GConverterInputStream"
+           glib:get-type="g_converter_input_stream_get_type"
+           glib:type-struct="ConverterInputStreamClass">
+      <constructor name="new" c:identifier="g_converter_input_stream_new">
+        <return-value transfer-ownership="full">
+          <type name="ConverterInputStream" c:type="GInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="base_stream" transfer-ownership="none">
+            <type name="InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="converter" transfer-ownership="none">
+            <type name="Converter" c:type="GConverter*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_converter"
+              c:identifier="g_converter_input_stream_get_converter">
+        <return-value transfer-ownership="full">
+          <type name="Converter" c:type="GConverter*"/>
+        </return-value>
+      </method>
+      <property name="converter" writable="1" construct-only="1">
+        <type name="Converter" c:type="GConverter"/>
+      </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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ConverterInputStreamPrivate"
+            c:type="GConverterInputStreamPrivate">
+    </record>
+    <class name="ConverterOutputStream"
+           c:type="GConverterOutputStream"
+           doc="An implementation of #GFilterOutputStream that allows data
+conversion."
+           parent="FilterOutputStream"
+           glib:type-name="GConverterOutputStream"
+           glib:get-type="g_converter_output_stream_get_type"
+           glib:type-struct="ConverterOutputStreamClass">
+      <constructor name="new" c:identifier="g_converter_output_stream_new">
+        <return-value transfer-ownership="full">
+          <type name="ConverterOutputStream" c:type="GOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="base_stream" transfer-ownership="none">
+            <type name="OutputStream" c:type="GOutputStream*"/>
+          </parameter>
+          <parameter name="converter" transfer-ownership="none">
+            <type name="Converter" c:type="GConverter*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_converter"
+              c:identifier="g_converter_output_stream_get_converter">
+        <return-value transfer-ownership="full">
+          <type name="Converter" c:type="GConverter*"/>
+        </return-value>
+      </method>
+      <property name="converter" writable="1" construct-only="1">
+        <type name="Converter" c:type="GConverter"/>
+      </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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ConverterOutputStreamPrivate"
+            c:type="GConverterOutputStreamPrivate">
+    </record>
+    <enumeration name="ConverterResult"
+                 doc="Results returned from g_converter_convert()."
+                 version="2.24"
+                 glib:type-name="GConverterResult"
+                 glib:get-type="g_converter_result_get_type"
+                 c:type="GConverterResult">
+      <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>
+    <constant name="DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME"
+              value="gio-desktop-app-info-lookup">
+      <type name="utf8"/>
+    </constant>
+    <class name="DataInputStream"
+           c:type="GDataInputStream"
+           doc="An implementation of #GBufferedInputStream that allows for high-level
+data manipulation of arbitrary data (including binary operations)."
+           parent="BufferedInputStream"
+           glib:type-name="GDataInputStream"
+           glib:get-type="g_data_input_stream_get_type"
+           glib:type-struct="DataInputStreamClass">
+      <constructor name="new" c:identifier="g_data_input_stream_new">
+        <return-value transfer-ownership="full">
+          <type name="DataInputStream" c:type="GDataInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="base_stream" transfer-ownership="none">
+            <type name="InputStream" c:type="GInputStream*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_byte_order"
+              c:identifier="g_data_input_stream_set_byte_order">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="order" transfer-ownership="none">
+            <type name="DataStreamByteOrder" c:type="GDataStreamByteOrder"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_byte_order"
+              c:identifier="g_data_input_stream_get_byte_order">
+        <return-value transfer-ownership="full">
+          <type name="DataStreamByteOrder" c:type="GDataStreamByteOrder"/>
+        </return-value>
+      </method>
+      <method name="set_newline_type"
+              c:identifier="g_data_input_stream_set_newline_type">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="DataStreamNewlineType"
+                  c:type="GDataStreamNewlineType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_newline_type"
+              c:identifier="g_data_input_stream_get_newline_type">
+        <return-value transfer-ownership="full">
+          <type name="DataStreamNewlineType" c:type="GDataStreamNewlineType"/>
+        </return-value>
+      </method>
+      <method name="read_byte"
+              c:identifier="g_data_input_stream_read_byte"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="uint8" c:type="guchar"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_int16"
+              c:identifier="g_data_input_stream_read_int16"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="int16" c:type="gint16"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_uint16"
+              c:identifier="g_data_input_stream_read_uint16"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_int32"
+              c:identifier="g_data_input_stream_read_int32"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="int32" c:type="gint32"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_uint32"
+              c:identifier="g_data_input_stream_read_uint32"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_int64"
+              c:identifier="g_data_input_stream_read_int64"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_uint64"
+              c:identifier="g_data_input_stream_read_uint64"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_line"
+              c:identifier="g_data_input_stream_read_line"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="length" direction="out" transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_line_async"
+              c:identifier="g_data_input_stream_read_line_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_line_finish"
+              c:identifier="g_data_input_stream_read_line_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="length" direction="out" transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_until"
+              c:identifier="g_data_input_stream_read_until"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stop_chars" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" direction="out" transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_until_async"
+              c:identifier="g_data_input_stream_read_until_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stop_chars" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_until_finish"
+              c:identifier="g_data_input_stream_read_until_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="length" direction="out" transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="byte-order" writable="1">
+        <type name="DataStreamByteOrder" c:type="GDataStreamByteOrder"/>
+      </property>
+      <property name="newline-type" writable="1">
+        <type name="DataStreamNewlineType" c:type="GDataStreamNewlineType"/>
+      </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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="DataInputStreamPrivate" c:type="GDataInputStreamPrivate">
+    </record>
+    <class name="DataOutputStream"
+           c:type="GDataOutputStream"
+           doc="An implementation of #GBufferedOutputStream that allows for high-level
+data manipulation of arbitrary data (including binary operations)."
+           parent="FilterOutputStream"
+           glib:type-name="GDataOutputStream"
+           glib:get-type="g_data_output_stream_get_type"
+           glib:type-struct="DataOutputStreamClass">
+      <constructor name="new" c:identifier="g_data_output_stream_new">
+        <return-value transfer-ownership="full">
+          <type name="DataOutputStream" c:type="GDataOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="base_stream" transfer-ownership="none">
+            <type name="OutputStream" c:type="GOutputStream*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_byte_order"
+              c:identifier="g_data_output_stream_set_byte_order">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="order" transfer-ownership="none">
+            <type name="DataStreamByteOrder" c:type="GDataStreamByteOrder"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_byte_order"
+              c:identifier="g_data_output_stream_get_byte_order">
+        <return-value transfer-ownership="full">
+          <type name="DataStreamByteOrder" c:type="GDataStreamByteOrder"/>
+        </return-value>
+      </method>
+      <method name="put_byte"
+              c:identifier="g_data_output_stream_put_byte"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="uint8" c:type="guchar"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int16"
+              c:identifier="g_data_output_stream_put_int16"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="int16" c:type="gint16"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint16"
+              c:identifier="g_data_output_stream_put_uint16"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="uint16" c:type="guint16"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int32"
+              c:identifier="g_data_output_stream_put_int32"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="int32" c:type="gint32"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint32"
+              c:identifier="g_data_output_stream_put_uint32"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_int64"
+              c:identifier="g_data_output_stream_put_int64"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_uint64"
+              c:identifier="g_data_output_stream_put_uint64"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="put_string"
+              c:identifier="g_data_output_stream_put_string"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="byte-order" writable="1">
+        <type name="DataStreamByteOrder" c:type="GDataStreamByteOrder"/>
+      </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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="DataOutputStreamPrivate" c:type="GDataOutputStreamPrivate">
+    </record>
+    <enumeration name="DataStreamByteOrder"
+                 doc="#GDataStreamByteOrder is used to ensure proper endianness of streaming data sources
+across various machine architectures."
+                 glib:type-name="GDataStreamByteOrder"
+                 glib:get-type="g_data_stream_byte_order_get_type"
+                 c:type="GDataStreamByteOrder">
+      <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"
+                 doc="#GDataStreamNewlineType is used when checking for or setting the line endings for a given file."
+                 glib:type-name="GDataStreamNewlineType"
+                 glib:get-type="g_data_stream_newline_type_get_type"
+                 c:type="GDataStreamNewlineType">
+      <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:type="GDesktopAppInfo"
+           parent="GObject.Object"
+           glib:type-name="GDesktopAppInfo"
+           glib:get-type="g_desktop_app_info_get_type"
+           glib:type-struct="DesktopAppInfoClass">
+      <implements name="AppInfo"/>
+      <constructor name="new_from_filename"
+                   c:identifier="g_desktop_app_info_new_from_filename">
+        <return-value transfer-ownership="full">
+          <type name="DesktopAppInfo" c:type="GDesktopAppInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_keyfile"
+                   c:identifier="g_desktop_app_info_new_from_keyfile">
+        <return-value transfer-ownership="full">
+          <type name="DesktopAppInfo" c:type="GDesktopAppInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_file" transfer-ownership="none">
+            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new" c:identifier="g_desktop_app_info_new">
+        <return-value transfer-ownership="full">
+          <type name="DesktopAppInfo" c:type="GDesktopAppInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="desktop_id" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="set_desktop_env"
+                c:identifier="g_desktop_app_info_set_desktop_env">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="desktop_env" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_filename"
+              c:identifier="g_desktop_app_info_get_filename">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_is_hidden"
+              c:identifier="g_desktop_app_info_get_is_hidden">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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:type="GDesktopAppInfoLookup"
+               doc="Interface that is used by backends to associate default
+handlers with URI schemes."
+               glib:type-name="GDesktopAppInfoLookup"
+               glib:get-type="g_desktop_app_info_lookup_get_type"
+               glib:type-struct="DesktopAppInfoLookupIface">
+      <virtual-method name="get_default_for_uri_scheme"
+                      invoker="get_default_for_uri_scheme">
+        <return-value transfer-ownership="full">
+          <type name="AppInfo" c:type="GAppInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri_scheme" transfer-ownership="none">
+            <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">
+        <return-value transfer-ownership="full">
+          <type name="AppInfo" c:type="GAppInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri_scheme" transfer-ownership="none">
+            <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"
+                  c:type="get_default_for_uri_scheme">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <interface name="Drive"
+               c:type="GDrive"
+               doc="Opaque drive object."
+               glib:type-name="GDrive"
+               glib:get-type="g_drive_get_type"
+               glib:type-struct="DriveIface">
+      <virtual-method name="get_name" invoker="get_name">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_icon" invoker="get_icon">
+        <return-value transfer-ownership="full">
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="has_volumes" invoker="has_volumes">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_volumes" invoker="get_volumes">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="is_media_removable" invoker="is_media_removable">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="has_media" invoker="has_media">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="is_media_check_automatic"
+                      invoker="is_media_check_automatic">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_eject" invoker="can_eject">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_poll_for_media" invoker="can_poll_for_media">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="eject" invoker="eject">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_finish" invoker="eject_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="poll_for_media" invoker="poll_for_media">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="poll_for_media_finish"
+                      invoker="poll_for_media_finish"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_identifier" invoker="get_identifier">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="kind" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="enumerate_identifiers"
+                      invoker="enumerate_identifiers">
+        <return-value transfer-ownership="full">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_start_stop_type" invoker="get_start_stop_type">
+        <return-value transfer-ownership="full">
+          <type name="DriveStartStopType" c:type="GDriveStartStopType"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_start" invoker="can_start">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_start_degraded" invoker="can_start_degraded">
+        <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="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="DriveStartFlags" c:type="GDriveStartFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="start_finish" invoker="start_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="can_stop" invoker="can_stop">
+        <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="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="stop_finish" invoker="stop_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_with_operation"
+                      invoker="eject_with_operation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_with_operation_finish"
+                      invoker="eject_with_operation_finish"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_name" c:identifier="g_drive_get_name">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_icon" c:identifier="g_drive_get_icon">
+        <return-value transfer-ownership="full">
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="has_volumes" c:identifier="g_drive_has_volumes">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_volumes" c:identifier="g_drive_get_volumes">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*">
+            <type name="Volume"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="is_media_removable"
+              c:identifier="g_drive_is_media_removable">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_media" c:identifier="g_drive_has_media">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_media_check_automatic"
+              c:identifier="g_drive_is_media_check_automatic">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="can_poll_for_media"
+              c:identifier="g_drive_can_poll_for_media">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="can_eject" c:identifier="g_drive_can_eject">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="eject" c:identifier="g_drive_eject">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_finish"
+              c:identifier="g_drive_eject_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="poll_for_media" c:identifier="g_drive_poll_for_media">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="poll_for_media_finish"
+              c:identifier="g_drive_poll_for_media_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_identifier" c:identifier="g_drive_get_identifier">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="kind" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enumerate_identifiers"
+              c:identifier="g_drive_enumerate_identifiers">
+        <return-value transfer-ownership="full">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_start_stop_type"
+              c:identifier="g_drive_get_start_stop_type">
+        <return-value transfer-ownership="full">
+          <type name="DriveStartStopType" c:type="GDriveStartStopType"/>
+        </return-value>
+      </method>
+      <method name="can_start" c:identifier="g_drive_can_start">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="can_start_degraded"
+              c:identifier="g_drive_can_start_degraded">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="start" c:identifier="g_drive_start">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="DriveStartFlags" c:type="GDriveStartFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start_finish"
+              c:identifier="g_drive_start_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_stop" c:identifier="g_drive_can_stop">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="stop" c:identifier="g_drive_stop">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="stop_finish" c:identifier="g_drive_stop_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_with_operation"
+              c:identifier="g_drive_eject_with_operation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_with_operation_finish"
+              c:identifier="g_drive_eject_with_operation_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="disconnected">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="eject-button">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="stop-button">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </interface>
+    <record name="DriveIface"
+            c:type="GDriveIface"
+            glib:is-gtype-struct-for="Drive"
+            doc="the #GDrive doesn&apos;t have one.
+of identifiers which the #GDrive has.
+Interface for creating #GDrive implementations.">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="changed">
+        <callback name="changed" c:type="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" c:type="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" c:type="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" c:type="get_name">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_icon">
+          <return-value transfer-ownership="full">
+            <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" c:type="has_volumes">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="get_volumes">
+          <return-value transfer-ownership="full">
+            <type name="GLib.List" c:type="GList*"/>
+          </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" c:type="is_media_removable">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="has_media">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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"
+                  c:type="is_media_check_automatic">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="can_eject">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="can_poll_for_media">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="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">
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_finish">
+        <callback name="eject_finish" c:type="eject_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="poll_for_media">
+        <callback name="poll_for_media" c:type="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">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="3">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="poll_for_media_finish">
+        <callback name="poll_for_media_finish"
+                  c:type="poll_for_media_finish"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_identifier">
+        <callback name="get_identifier" c:type="get_identifier">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enumerate_identifiers">
+        <callback name="enumerate_identifiers" c:type="enumerate_identifiers">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_start_stop_type">
+          <return-value transfer-ownership="full">
+            <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" c:type="can_start">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="can_start_degraded">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="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">
+              <type name="DriveStartFlags" c:type="GDriveStartFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start_finish">
+        <callback name="start_finish" c:type="start_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_stop">
+        <callback name="can_stop" c:type="can_stop">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="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">
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop_finish">
+        <callback name="stop_finish" c:type="stop_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop_button">
+        <callback name="stop_button" c:type="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" c:type="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">
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_with_operation_finish">
+        <callback name="eject_with_operation_finish"
+                  c:type="eject_with_operation_finish"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="DriveStartFlags"
+                 doc="Flags used when starting a drive."
+                 version="2.22"
+                 glib:type-name="GDriveStartFlags"
+                 glib:get-type="g_drive_start_flags_get_type"
+                 c:type="GDriveStartFlags">
+      <member name="none"
+              value="0"
+              c:identifier="G_DRIVE_START_NONE"
+              glib:nick="none"/>
+    </enumeration>
+    <enumeration name="DriveStartStopType"
+                 doc="start/stop.
+shut down the drive and e.g. power down the port the drive is
+attached to.
+for connecting/disconnect to the drive over the network.
+assemble/disassemble a virtual drive from several physical
+drives.
+unlock/lock the disk (for example using the ATA &lt;quote&gt;SECURITY
+UNLOCK DEVICE&lt;/quote&gt; command)
+Enumeration describing how a drive can be started/stopped."
+                 version="2.22"
+                 glib:type-name="GDriveStartStopType"
+                 glib:get-type="g_drive_start_stop_type_get_type"
+                 c:type="GDriveStartStopType">
+      <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:type="GEmblem"
+           doc="An object for Emblems"
+           parent="GObject.Object"
+           glib:type-name="GEmblem"
+           glib:get-type="g_emblem_get_type"
+           glib:type-struct="EmblemClass">
+      <implements name="Icon"/>
+      <constructor name="new" c:identifier="g_emblem_new">
+        <return-value transfer-ownership="full">
+          <type name="Emblem" c:type="GEmblem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <type name="Icon" c:type="GIcon*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_origin"
+                   c:identifier="g_emblem_new_with_origin">
+        <return-value transfer-ownership="full">
+          <type name="Emblem" c:type="GEmblem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <type name="Icon" c:type="GIcon*"/>
+          </parameter>
+          <parameter name="origin" transfer-ownership="none">
+            <type name="EmblemOrigin" c:type="GEmblemOrigin"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_icon" c:identifier="g_emblem_get_icon">
+        <return-value transfer-ownership="full">
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="get_origin" c:identifier="g_emblem_get_origin">
+        <return-value transfer-ownership="full">
+          <type name="EmblemOrigin" c:type="GEmblemOrigin"/>
+        </return-value>
+      </method>
+      <property name="icon" writable="1" construct-only="1">
+        <type name="GObject.Object" c:type="GObject"/>
+      </property>
+      <property name="origin" writable="1" construct-only="1">
+        <type name="EmblemOrigin" c:type="GEmblemOrigin"/>
+      </property>
+    </class>
+    <record name="EmblemClass"
+            c:type="GEmblemClass"
+            glib:is-gtype-struct-for="Emblem">
+    </record>
+    <enumeration name="EmblemOrigin"
+                 doc="GEmblemOrigin is used to add information about the origin of the emblem
+to #GEmblem."
+                 version="2.18"
+                 glib:type-name="GEmblemOrigin"
+                 glib:get-type="g_emblem_origin_get_type"
+                 c:type="GEmblemOrigin">
+      <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:type="GEmblemedIcon"
+           doc="An implementation of #GIcon for icons with emblems."
+           parent="GObject.Object"
+           glib:type-name="GEmblemedIcon"
+           glib:get-type="g_emblemed_icon_get_type"
+           glib:type-struct="EmblemedIconClass">
+      <implements name="Icon"/>
+      <constructor name="new" c:identifier="g_emblemed_icon_new">
+        <return-value transfer-ownership="full">
+          <type name="EmblemedIcon" c:type="GIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <type name="Icon" c:type="GIcon*"/>
+          </parameter>
+          <parameter name="emblem" transfer-ownership="none">
+            <type name="Emblem" c:type="GEmblem*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_icon" c:identifier="g_emblemed_icon_get_icon">
+        <return-value transfer-ownership="full">
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="get_emblems" c:identifier="g_emblemed_icon_get_emblems">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="add_emblem" c:identifier="g_emblemed_icon_add_emblem">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="emblem" transfer-ownership="none">
+            <type name="Emblem" c:type="GEmblem*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <record name="EmblemedIconClass"
+            c:type="GEmblemedIconClass"
+            glib:is-gtype-struct-for="EmblemedIcon">
+    </record>
+    <constant name="FILE_ATTRIBUTE_ACCESS_CAN_DELETE"
+              value="access::can-delete">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE"
+              value="access::can-execute">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_ACCESS_CAN_READ" value="access::can-read">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_ACCESS_CAN_RENAME"
+              value="access::can-rename">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_ACCESS_CAN_TRASH" value="access::can-trash">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_ACCESS_CAN_WRITE" value="access::can-write">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_DOS_IS_ARCHIVE" value="dos::is-archive">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_DOS_IS_SYSTEM" value="dos::is-system">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_ETAG_VALUE" value="etag::value">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_FILESYSTEM_FREE" value="filesystem::free">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_FILESYSTEM_READONLY"
+              value="filesystem::readonly">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_FILESYSTEM_SIZE" value="filesystem::size">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_FILESYSTEM_TYPE" value="filesystem::type">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW"
+              value="filesystem::use-preview">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_GVFS_BACKEND" value="gvfs::backend">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_ID_FILE" value="id::file">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_ID_FILESYSTEM" value="id::filesystem">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT"
+              value="mountable::can-eject">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT"
+              value="mountable::can-mount">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL"
+              value="mountable::can-poll">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_CAN_START"
+              value="mountable::can-start">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED"
+              value="mountable::can-start-degraded">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_CAN_STOP"
+              value="mountable::can-stop">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT"
+              value="mountable::can-unmount">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI"
+              value="mountable::hal-udi">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC"
+              value="mountable::is-media-check-automatic">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_START_STOP_TYPE"
+              value="mountable::start-stop-type">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE"
+              value="mountable::unix-device">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE"
+              value="mountable::unix-device-file">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_OWNER_GROUP" value="owner::group">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_OWNER_USER" value="owner::user">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_OWNER_USER_REAL" value="owner::user-real">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_PREVIEW_ICON" value="preview::icon">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_SELINUX_CONTEXT" value="selinux::context">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE"
+              value="standard::allocated-size">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE"
+              value="standard::content-type">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_COPY_NAME"
+              value="standard::copy-name">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_DESCRIPTION"
+              value="standard::description">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME"
+              value="standard::display-name">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_EDIT_NAME"
+              value="standard::edit-name">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE"
+              value="standard::fast-content-type">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_ICON" value="standard::icon">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_IS_BACKUP"
+              value="standard::is-backup">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_IS_HIDDEN"
+              value="standard::is-hidden">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_IS_SYMLINK"
+              value="standard::is-symlink">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL"
+              value="standard::is-virtual">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_NAME" value="standard::name">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_SIZE" value="standard::size">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_SORT_ORDER"
+              value="standard::sort-order">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET"
+              value="standard::symlink-target">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_TARGET_URI"
+              value="standard::target-uri">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_STANDARD_TYPE" value="standard::type">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_THUMBNAILING_FAILED"
+              value="thumbnail::failed">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_THUMBNAIL_PATH" value="thumbnail::path">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TIME_ACCESS" value="time::access">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TIME_ACCESS_USEC" value="time::access-usec">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TIME_CHANGED" value="time::changed">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TIME_CHANGED_USEC"
+              value="time::changed-usec">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TIME_CREATED" value="time::created">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TIME_CREATED_USEC"
+              value="time::created-usec">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TIME_MODIFIED" value="time::modified">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TIME_MODIFIED_USEC"
+              value="time::modified-usec">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TRASH_DELETION_DATE"
+              value="trash::deletion-date">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TRASH_ITEM_COUNT" value="trash::item-count">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_TRASH_ORIG_PATH" value="trash::orig-path">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_BLOCKS" value="unix::blocks">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_BLOCK_SIZE" value="unix::block-size">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_DEVICE" value="unix::device">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_GID" value="unix::gid">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_INODE" value="unix::inode">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT"
+              value="unix::is-mountpoint">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_MODE" value="unix::mode">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_NLINK" value="unix::nlink">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_RDEV" value="unix::rdev">
+      <type name="utf8"/>
+    </constant>
+    <constant name="FILE_ATTRIBUTE_UNIX_UID" value="unix::uid">
+      <type name="utf8"/>
+    </constant>
+    <interface name="File"
+               c:type="GFile"
+               doc="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."
+               glib:type-name="GFile"
+               glib:get-type="g_file_get_type"
+               glib:type-struct="FileIface">
+      <virtual-method name="dup" invoker="dup">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="hash">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="equal" invoker="equal">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file2" transfer-ownership="none">
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="is_native" invoker="is_native">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="has_uri_scheme" invoker="has_uri_scheme">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri_scheme" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_uri_scheme" invoker="get_uri_scheme">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_basename" invoker="get_basename">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_path" invoker="get_path">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_uri" invoker="get_uri">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_parse_name" invoker="get_parse_name">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_parent" invoker="get_parent">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="prefix_matches">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file" transfer-ownership="none">
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_relative_path" invoker="get_relative_path">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="descendant" transfer-ownership="none">
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="resolve_relative_path"
+                      invoker="resolve_relative_path">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="relative_path" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_child_for_display_name"
+                      invoker="get_child_for_display_name"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="enumerate_children"
+                      invoker="enumerate_children"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileEnumerator" c:type="GFileEnumerator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="enumerate_children_async"
+                      invoker="enumerate_children_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="6">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="enumerate_children_finish"
+                      invoker="enumerate_children_finish"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileEnumerator" c:type="GFileEnumerator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info" invoker="query_info" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info_async" invoker="query_info_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="6">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info_finish"
+                      invoker="query_info_finish"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <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="query_filesystem_info"
+                      invoker="query_filesystem_info"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_filesystem_info_async"
+                      invoker="query_filesystem_info_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_filesystem_info_finish"
+                      invoker="query_filesystem_info_finish"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <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="find_enclosing_mount"
+                      invoker="find_enclosing_mount"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Mount" c:type="GMount*"/>
+        </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="find_enclosing_mount_async"
+                      invoker="find_enclosing_mount_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="find_enclosing_mount_finish"
+                      invoker="find_enclosing_mount_finish"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Mount" c:type="GMount*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_display_name"
+                      invoker="set_display_name"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_display_name_async"
+                      invoker="set_display_name_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="display_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_display_name_finish"
+                      invoker="set_display_name_finish"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_settable_attributes"
+                      invoker="query_settable_attributes"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileAttributeInfoList" c:type="GFileAttributeInfoList*"/>
+        </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="query_writable_namespaces"
+                      invoker="query_writable_namespaces"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileAttributeInfoList" c:type="GFileAttributeInfoList*"/>
+        </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="set_attribute" invoker="set_attribute" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="FileAttributeType" c:type="GFileAttributeType"/>
+          </parameter>
+          <parameter name="value_p" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_attributes_from_info"
+                      invoker="set_attributes_from_info"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <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"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_attributes_async"
+                      invoker="set_attributes_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="6">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_attributes_finish"
+                      invoker="set_attributes_finish"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="info" transfer-ownership="none">
+            <type name="FileInfo" c:type="GFileInfo**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="read_fn" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInputStream" c:type="GFileInputStream*"/>
+        </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="read_async" invoker="read_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="read_finish" invoker="read_finish" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInputStream" c:type="GFileInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="append_to" invoker="append_to" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="append_to_async" invoker="append_to_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="append_to_finish"
+                      invoker="append_to_finish"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create" invoker="create" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_async" invoker="create_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_finish" invoker="create_finish" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="replace" invoker="replace" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="etag" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="replace_async" invoker="replace_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="etag" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="7">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="replace_finish"
+                      invoker="replace_finish"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="delete_file" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="trash" invoker="trash" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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_directory"
+                      invoker="make_directory"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="symlink_value" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="copy" invoker="copy" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="destination" transfer-ownership="none">
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="progress_callback" transfer-ownership="none">
+            <type name="FileProgressCallback" c:type="GFileProgressCallback"/>
+          </parameter>
+          <parameter name="progress_callback_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="copy_async" invoker="copy_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="destination" transfer-ownership="none">
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="progress_callback" transfer-ownership="none">
+            <type name="FileProgressCallback" c:type="GFileProgressCallback"/>
+          </parameter>
+          <parameter name="progress_callback_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="8">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="copy_finish" invoker="copy_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="move" invoker="move" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="destination" transfer-ownership="none">
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="progress_callback" transfer-ownership="none">
+            <type name="FileProgressCallback" c:type="GFileProgressCallback"/>
+          </parameter>
+          <parameter name="progress_callback_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="mount_mountable" invoker="mount_mountable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountMountFlags" c:type="GMountMountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="mount_mountable_finish"
+                      invoker="mount_mountable_finish"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unmount_mountable" invoker="unmount_mountable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unmount_mountable_finish"
+                      invoker="unmount_mountable_finish"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_mountable" invoker="eject_mountable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_mountable_finish"
+                      invoker="eject_mountable_finish"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="mount_enclosing_volume"
+                      invoker="mount_enclosing_volume">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountMountFlags" c:type="GMountMountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="mount_enclosing_volume_finish"
+                      invoker="mount_enclosing_volume_finish"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="monitor_dir" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileMonitor" c:type="GFileMonitor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileMonitorFlags" c:type="GFileMonitorFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="monitor_file" invoker="monitor_file" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileMonitor" c:type="GFileMonitor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileMonitorFlags" c:type="GFileMonitorFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="open_readwrite"
+                      invoker="open_readwrite"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </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="open_readwrite_async"
+                      invoker="open_readwrite_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="open_readwrite_finish"
+                      invoker="open_readwrite_finish"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_readwrite"
+                      invoker="create_readwrite"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_readwrite_async"
+                      invoker="create_readwrite_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="create_readwrite_finish"
+                      invoker="create_readwrite_finish"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="replace_readwrite"
+                      invoker="replace_readwrite"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="etag" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="replace_readwrite_async"
+                      invoker="replace_readwrite_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="etag" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="7">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="replace_readwrite_finish"
+                      invoker="replace_readwrite_finish"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="start_mountable" invoker="start_mountable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="DriveStartFlags" c:type="GDriveStartFlags"/>
+          </parameter>
+          <parameter name="start_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="start_mountable_finish"
+                      invoker="start_mountable_finish"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="stop_mountable" invoker="stop_mountable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="stop_mountable_finish"
+                      invoker="stop_mountable_finish"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unmount_mountable_with_operation"
+                      invoker="unmount_mountable_with_operation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unmount_mountable_with_operation_finish"
+                      invoker="unmount_mountable_with_operation_finish"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_mountable_with_operation"
+                      invoker="eject_mountable_with_operation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_mountable_with_operation_finish"
+                      invoker="eject_mountable_with_operation_finish"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="poll_mountable" invoker="poll_mountable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="poll_mountable_finish"
+                      invoker="poll_mountable_finish"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="dup" c:identifier="g_file_dup">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <method name="equal" c:identifier="g_file_equal">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file2" transfer-ownership="none">
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_basename" c:identifier="g_file_get_basename">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_path" c:identifier="g_file_get_path">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_uri" c:identifier="g_file_get_uri">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_parse_name" c:identifier="g_file_get_parse_name">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_parent" c:identifier="g_file_get_parent">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <method name="has_parent" c:identifier="g_file_has_parent">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child" c:identifier="g_file_get_child">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <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">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_prefix" c:identifier="g_file_has_prefix">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="prefix" transfer-ownership="none">
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_relative_path" c:identifier="g_file_get_relative_path">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="descendant" transfer-ownership="none">
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="resolve_relative_path"
+              c:identifier="g_file_resolve_relative_path">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="relative_path" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_native" c:identifier="g_file_is_native">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_uri_scheme" c:identifier="g_file_has_uri_scheme">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri_scheme" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uri_scheme" c:identifier="g_file_get_uri_scheme">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="read" c:identifier="g_file_read" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInputStream" c:type="GFileInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_async" c:identifier="g_file_read_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_finish" c:identifier="g_file_read_finish" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInputStream" c:type="GFileInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_to" c:identifier="g_file_append_to" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create" c:identifier="g_file_create" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace" c:identifier="g_file_replace" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="etag" transfer-ownership="none" allow-none="1">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_to_async" c:identifier="g_file_append_to_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_to_finish"
+              c:identifier="g_file_append_to_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_async" c:identifier="g_file_create_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_finish"
+              c:identifier="g_file_create_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_async" c:identifier="g_file_replace_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="etag" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="7">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_finish"
+              c:identifier="g_file_replace_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileOutputStream" c:type="GFileOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="open_readwrite"
+              c:identifier="g_file_open_readwrite"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="open_readwrite_async"
+              c:identifier="g_file_open_readwrite_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="open_readwrite_finish"
+              c:identifier="g_file_open_readwrite_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_readwrite"
+              c:identifier="g_file_create_readwrite"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_readwrite_async"
+              c:identifier="g_file_create_readwrite_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_readwrite_finish"
+              c:identifier="g_file_create_readwrite_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_readwrite"
+              c:identifier="g_file_replace_readwrite"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="etag" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_readwrite_async"
+              c:identifier="g_file_replace_readwrite_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="etag" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="7">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_readwrite_finish"
+              c:identifier="g_file_replace_readwrite_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileIOStream" c:type="GFileIOStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_exists" c:identifier="g_file_query_exists">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="query_file_type" c:identifier="g_file_query_file_type">
+        <return-value transfer-ownership="full">
+          <type name="FileType" c:type="GFileType"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_info" c:identifier="g_file_query_info" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_info_async" c:identifier="g_file_query_info_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="6">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_info_finish"
+              c:identifier="g_file_query_info_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_filesystem_info"
+              c:identifier="g_file_query_filesystem_info"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_filesystem_info_async"
+              c:identifier="g_file_query_filesystem_info_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_filesystem_info_finish"
+              c:identifier="g_file_query_filesystem_info_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_enclosing_mount"
+              c:identifier="g_file_find_enclosing_mount"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Mount" c:type="GMount*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_enclosing_mount_async"
+              c:identifier="g_file_find_enclosing_mount_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_enclosing_mount_finish"
+              c:identifier="g_file_find_enclosing_mount_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Mount" c:type="GMount*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enumerate_children"
+              c:identifier="g_file_enumerate_children"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileEnumerator" c:type="GFileEnumerator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enumerate_children_async"
+              c:identifier="g_file_enumerate_children_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="6">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enumerate_children_finish"
+              c:identifier="g_file_enumerate_children_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileEnumerator" c:type="GFileEnumerator*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_display_name"
+              c:identifier="g_file_set_display_name"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_display_name_async"
+              c:identifier="g_file_set_display_name_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="display_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_display_name_finish"
+              c:identifier="g_file_set_display_name_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete" c:identifier="g_file_delete" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="trash" c:identifier="g_file_trash" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="copy" c:identifier="g_file_copy" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="destination" transfer-ownership="none">
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="progress_callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="5">
+            <type name="FileProgressCallback" c:type="GFileProgressCallback"/>
+          </parameter>
+          <parameter name="progress_callback_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy_async" c:identifier="g_file_copy_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="destination" transfer-ownership="none">
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="progress_callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="6">
+            <type name="FileProgressCallback" c:type="GFileProgressCallback"/>
+          </parameter>
+          <parameter name="progress_callback_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="8">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy_finish" c:identifier="g_file_copy_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move" c:identifier="g_file_move" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="destination" transfer-ownership="none">
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="progress_callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="5">
+            <type name="FileProgressCallback" c:type="GFileProgressCallback"/>
+          </parameter>
+          <parameter name="progress_callback_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="make_directory"
+              c:identifier="g_file_make_directory"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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_symbolic_link"
+              c:identifier="g_file_make_symbolic_link"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="symlink_value" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_settable_attributes"
+              c:identifier="g_file_query_settable_attributes"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileAttributeInfoList" c:type="GFileAttributeInfoList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_writable_namespaces"
+              c:identifier="g_file_query_writable_namespaces"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileAttributeInfoList" c:type="GFileAttributeInfoList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute"
+              c:identifier="g_file_set_attribute"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="FileAttributeType" c:type="GFileAttributeType"/>
+          </parameter>
+          <parameter name="value_p" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attributes_from_info"
+              c:identifier="g_file_set_attributes_from_info"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <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"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attributes_async"
+              c:identifier="g_file_set_attributes_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="6">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attributes_finish"
+              c:identifier="g_file_set_attributes_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="info" direction="out" transfer-ownership="full">
+            <type name="FileInfo" c:type="GFileInfo**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_string"
+              c:identifier="g_file_set_attribute_string"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_uint32"
+              c:identifier="g_file_set_attribute_uint32"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_int32"
+              c:identifier="g_file_set_attribute_int32"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int32" c:type="gint32"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_uint64"
+              c:identifier="g_file_set_attribute_uint64"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_int64"
+              c:identifier="g_file_set_attribute_int64"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="mount_enclosing_volume"
+              c:identifier="g_file_mount_enclosing_volume">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountMountFlags" c:type="GMountMountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="mount_enclosing_volume_finish"
+              c:identifier="g_file_mount_enclosing_volume_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="mount_mountable" c:identifier="g_file_mount_mountable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountMountFlags" c:type="GMountMountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="mount_mountable_finish"
+              c:identifier="g_file_mount_mountable_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmount_mountable" c:identifier="g_file_unmount_mountable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmount_mountable_finish"
+              c:identifier="g_file_unmount_mountable_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmount_mountable_with_operation"
+              c:identifier="g_file_unmount_mountable_with_operation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmount_mountable_with_operation_finish"
+              c:identifier="g_file_unmount_mountable_with_operation_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_mountable" c:identifier="g_file_eject_mountable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_mountable_finish"
+              c:identifier="g_file_eject_mountable_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_mountable_with_operation"
+              c:identifier="g_file_eject_mountable_with_operation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_mountable_with_operation_finish"
+              c:identifier="g_file_eject_mountable_with_operation_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy_attributes"
+              c:identifier="g_file_copy_attributes"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="destination" transfer-ownership="none">
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="monitor_directory"
+              c:identifier="g_file_monitor_directory"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileMonitor" c:type="GFileMonitor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileMonitorFlags" c:type="GFileMonitorFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="monitor_file"
+              c:identifier="g_file_monitor_file"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileMonitor" c:type="GFileMonitor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileMonitorFlags" c:type="GFileMonitorFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="monitor" c:identifier="g_file_monitor" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileMonitor" c:type="GFileMonitor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileMonitorFlags" c:type="GFileMonitorFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start_mountable" c:identifier="g_file_start_mountable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="DriveStartFlags" c:type="GDriveStartFlags"/>
+          </parameter>
+          <parameter name="start_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start_mountable_finish"
+              c:identifier="g_file_start_mountable_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="stop_mountable" c:identifier="g_file_stop_mountable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="stop_mountable_finish"
+              c:identifier="g_file_stop_mountable_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="poll_mountable" c:identifier="g_file_poll_mountable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="poll_mountable_finish"
+              c:identifier="g_file_poll_mountable_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_default_handler"
+              c:identifier="g_file_query_default_handler"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="AppInfo" c:type="GAppInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_contents"
+              c:identifier="g_file_load_contents"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="contents" direction="out" transfer-ownership="full">
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+          <parameter name="length"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+          <parameter name="etag_out"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_contents_async"
+              c:identifier="g_file_load_contents_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_contents_finish"
+              c:identifier="g_file_load_contents_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="contents" direction="out" transfer-ownership="full">
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+          <parameter name="length"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+          <parameter name="etag_out"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_partial_contents_async"
+              c:identifier="g_file_load_partial_contents_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="read_more_callback"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="FileReadMoreCallback" c:type="GFileReadMoreCallback"/>
+          </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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_partial_contents_finish"
+              c:identifier="g_file_load_partial_contents_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="contents" direction="out" transfer-ownership="full">
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+          <parameter name="length"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+          <parameter name="etag_out"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_contents"
+              c:identifier="g_file_replace_contents"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="contents" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="etag" transfer-ownership="none" allow-none="1">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="new_etag"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_contents_async"
+              c:identifier="g_file_replace_contents_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="contents" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="etag" transfer-ownership="none" allow-none="1">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="make_backup" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="8">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="replace_contents_finish"
+              c:identifier="g_file_replace_contents_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="new_etag"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1">
+            <type name="utf8" c:type="char**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="supports_thread_contexts"
+              c:identifier="g_file_supports_thread_contexts">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="FileAttributeInfo"
+            c:type="GFileAttributeInfo"
+            doc="Information about a specific attribute.">
+      <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"
+              doc="Flags specifying the behaviour of an attribute."
+              glib:type-name="GFileAttributeInfoFlags"
+              glib:get-type="g_file_attribute_info_flags_get_type"
+              c:type="GFileAttributeInfoFlags">
+      <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"
+            doc="Acts as a lightweight registry for possible valid file attributes.
+The registry stores Key-Value pair formats as #GFileAttributeInfo&lt;!-- --&gt;s."
+            glib:type-name="GFileAttributeInfoList"
+            glib:get-type="g_file_attribute_info_list_get_type">
+      <field name="infos" writable="1">
+        <type name="FileAttributeInfo" c:type="GFileAttributeInfo*"/>
+      </field>
+      <field name="n_infos" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <constructor name="new" c:identifier="g_file_attribute_info_list_new">
+        <return-value transfer-ownership="full">
+          <type name="FileAttributeInfoList" c:type="GFileAttributeInfoList*"/>
+        </return-value>
+      </constructor>
+      <method name="ref" c:identifier="g_file_attribute_info_list_ref">
+        <return-value transfer-ownership="full">
+          <type name="FileAttributeInfoList" c:type="GFileAttributeInfoList*"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="g_file_attribute_info_list_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="dup" c:identifier="g_file_attribute_info_list_dup">
+        <return-value transfer-ownership="full">
+          <type name="FileAttributeInfoList" c:type="GFileAttributeInfoList*"/>
+        </return-value>
+      </method>
+      <method name="lookup" c:identifier="g_file_attribute_info_list_lookup">
+        <return-value transfer-ownership="none">
+          <type name="FileAttributeInfo" c:type="GFileAttributeInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add" c:identifier="g_file_attribute_info_list_add">
+        <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>
+          <parameter name="type" transfer-ownership="none">
+            <type name="FileAttributeType" c:type="GFileAttributeType"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="FileAttributeInfoFlags"
+                  c:type="GFileAttributeInfoFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="FileAttributeMatcher"
+            c:type="GFileAttributeMatcher"
+            doc="Determines if a string matches a file attribute.">
+      <constructor name="new" c:identifier="g_file_attribute_matcher_new">
+        <return-value transfer-ownership="full">
+          <type name="FileAttributeMatcher" c:type="GFileAttributeMatcher*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="ref" c:identifier="g_file_attribute_matcher_ref">
+        <return-value transfer-ownership="full">
+          <type name="FileAttributeMatcher" c:type="GFileAttributeMatcher*"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="g_file_attribute_matcher_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="matches" c:identifier="g_file_attribute_matcher_matches">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="matches_only"
+              c:identifier="g_file_attribute_matcher_matches_only">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enumerate_namespace"
+              c:identifier="g_file_attribute_matcher_enumerate_namespace">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="ns" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enumerate_next"
+              c:identifier="g_file_attribute_matcher_enumerate_next">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+    </record>
+    <enumeration name="FileAttributeStatus"
+                 doc="Used by g_file_set_attributes_from_info() when setting file attributes."
+                 glib:type-name="GFileAttributeStatus"
+                 glib:get-type="g_file_attribute_status_get_type"
+                 c:type="GFileAttributeStatus">
+      <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"
+                 doc="The data types for file attributes."
+                 glib:type-name="GFileAttributeType"
+                 glib:get-type="g_file_attribute_type_get_type"
+                 c:type="GFileAttributeType">
+      <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"
+              doc="Flags used when copying or moving files."
+              glib:type-name="GFileCopyFlags"
+              glib:get-type="g_file_copy_flags_get_type"
+              c:type="GFileCopyFlags">
+      <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"
+              doc="accessed by the current user.
+as if it didn&apos;t exist before. Don&apos;t try to keep any old
+permissions, replace instead of following links. This
+is generally useful if you&apos;re doing a &quot;copy over&quot;
+rather than a &quot;save new version of&quot; replace operation.
+You can think of it as &quot;unlink destination&quot; before
+writing to it, although the implementation may not
+be exactly like that. Since 2.20
+Flags used when an operation may create a file."
+              glib:type-name="GFileCreateFlags"
+              glib:get-type="g_file_create_flags_get_type"
+              c:type="GFileCreateFlags">
+      <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:type="GFileDescriptorBased"
+               doc="An interface for file descriptor based io objects."
+               glib:type-name="GFileDescriptorBased"
+               glib:get-type="g_file_descriptor_based_get_type"
+               glib:type-struct="FileDescriptorBasedIface">
+      <virtual-method name="get_fd" invoker="get_fd">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_fd" c:identifier="g_file_descriptor_based_get_fd">
+        <return-value transfer-ownership="none">
+          <type name="int" 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" c:type="get_fd">
+          <return-value transfer-ownership="none">
+            <type name="int" 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:type="GFileEnumerator"
+           doc="A per matched file iterator."
+           parent="GObject.Object"
+           glib:type-name="GFileEnumerator"
+           glib:get-type="g_file_enumerator_get_type"
+           glib:type-struct="FileEnumeratorClass">
+      <virtual-method name="next_file" invoker="next_file" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </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="close_fn" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="next_files_async" invoker="next_files_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="num_files" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="next_files_finish" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="close_async" invoker="close_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="close_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="next_file"
+              c:identifier="g_file_enumerator_next_file"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close" c:identifier="g_file_enumerator_close" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="next_files_async"
+              c:identifier="g_file_enumerator_next_files_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="num_files" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next_files_finish"
+              c:identifier="g_file_enumerator_next_files_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*">
+            <type name="FileInfo"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close_async" c:identifier="g_file_enumerator_close_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close_finish"
+              c:identifier="g_file_enumerator_close_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_closed" c:identifier="g_file_enumerator_is_closed">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_pending" c:identifier="g_file_enumerator_has_pending">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_pending" c:identifier="g_file_enumerator_set_pending">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pending" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_container"
+              c:identifier="g_file_enumerator_get_container">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <property name="container" readable="0" writable="1" construct-only="1">
+        <type name="File" c:type="GFile"/>
+      </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" c:type="next_file" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_fn">
+        <callback name="close_fn" c:type="close_fn" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="next_files_async">
+        <callback name="next_files_async" c:type="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">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="next_files_finish">
+        <callback name="next_files_finish"
+                  c:type="next_files_finish"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <type name="GLib.List" c:type="GList*"/>
+          </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" c:type="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">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_finish">
+        <callback name="close_finish" c:type="close_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved6">
+        <callback name="g_reserved6" c:type="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved7">
+        <callback name="g_reserved7" c:type="_g_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="FileEnumeratorPrivate" c:type="GFileEnumeratorPrivate">
+    </record>
+    <class name="FileIOStream"
+           c:type="GFileIOStream"
+           doc="A subclass of GIOStream for opened files. This adds
+a few file-specific operations and seeking and truncating.
+#GFileIOStream implements GSeekable."
+           parent="IOStream"
+           glib:type-name="GFileIOStream"
+           glib:get-type="g_file_io_stream_get_type"
+           glib:type-struct="FileIOStreamClass">
+      <implements name="Seekable"/>
+      <virtual-method name="tell">
+        <return-value transfer-ownership="full">
+          <type name="GLib.offset" c:type="goffset"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_seek">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="seek" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="GLib.offset" c:type="goffset"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GLib.SeekType" c:type="GSeekType"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="can_truncate">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="truncate_fn" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="GLib.offset" c:type="goffset"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info" invoker="query_info" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info_async" invoker="query_info_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info_finish" throws="1">
+        <return-value transfer-ownership="full">
+          <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="get_etag" invoker="get_etag">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <method name="query_info"
+              c:identifier="g_file_io_stream_query_info"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_info_async"
+              c:identifier="g_file_io_stream_query_info_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_info_finish"
+              c:identifier="g_file_io_stream_query_info_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_etag" c:identifier="g_file_io_stream_get_etag">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </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" c:type="tell">
+          <return-value transfer-ownership="full">
+            <type name="GLib.offset" 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" c:type="can_seek">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="seek" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="GLib.offset" c:type="goffset"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="GLib.SeekType" c:type="GSeekType"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_truncate">
+        <callback name="can_truncate" c:type="can_truncate">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="truncate_fn" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="GLib.offset" c:type="goffset"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info">
+        <callback name="query_info" c:type="query_info" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info_async">
+        <callback name="query_info_async" c:type="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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info_finish">
+        <callback name="query_info_finish"
+                  c:type="query_info_finish"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_etag">
+          <return-value transfer-ownership="full">
+            <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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="FileIOStreamPrivate" c:type="GFileIOStreamPrivate">
+    </record>
+    <class name="FileIcon"
+           c:type="GFileIcon"
+           doc="Gets an icon for a #GFile. Implements #GLoadableIcon."
+           parent="GObject.Object"
+           glib:type-name="GFileIcon"
+           glib:get-type="g_file_icon_get_type"
+           glib:type-struct="FileIconClass">
+      <implements name="Icon"/>
+      <implements name="LoadableIcon"/>
+      <constructor name="new" c:identifier="g_file_icon_new">
+        <return-value transfer-ownership="full">
+          <type name="FileIcon" c:type="GIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="file" transfer-ownership="none">
+            <type name="File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_file" c:identifier="g_file_icon_get_file">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <property name="file" writable="1" construct-only="1">
+        <type name="File" c:type="GFile"/>
+      </property>
+    </class>
+    <record name="FileIconClass"
+            c:type="GFileIconClass"
+            glib:is-gtype-struct-for="FileIcon">
+    </record>
+    <record name="FileIface"
+            c:type="GFileIface"
+            glib:is-gtype-struct-for="File"
+            doc="An interface for writing VFS file handles.">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="dup">
+        <callback name="dup" c:type="dup">
+          <return-value transfer-ownership="full">
+            <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" c:type="hash">
+          <return-value transfer-ownership="none">
+            <type name="uint" 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" c:type="equal">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_native">
+        <callback name="is_native" c:type="is_native">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="has_uri_scheme">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_uri_scheme">
+        <callback name="get_uri_scheme" c:type="get_uri_scheme">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_basename">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_path">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_uri">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_parse_name">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_parent">
+          <return-value transfer-ownership="full">
+            <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" c:type="prefix_matches">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_relative_path">
+        <callback name="get_relative_path" c:type="get_relative_path">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="resolve_relative_path">
+        <callback name="resolve_relative_path" c:type="resolve_relative_path">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_child_for_display_name">
+        <callback name="get_child_for_display_name"
+                  c:type="get_child_for_display_name"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enumerate_children">
+        <callback name="enumerate_children"
+                  c:type="enumerate_children"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enumerate_children_async">
+        <callback name="enumerate_children_async"
+                  c:type="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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="6">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enumerate_children_finish">
+        <callback name="enumerate_children_finish"
+                  c:type="enumerate_children_finish"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info">
+        <callback name="query_info" c:type="query_info" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info_async">
+        <callback name="query_info_async" c:type="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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="6">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info_finish">
+        <callback name="query_info_finish"
+                  c:type="query_info_finish"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_filesystem_info">
+        <callback name="query_filesystem_info"
+                  c:type="query_filesystem_info"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_filesystem_info_async">
+        <callback name="query_filesystem_info_async"
+                  c:type="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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_filesystem_info_finish">
+        <callback name="query_filesystem_info_finish"
+                  c:type="query_filesystem_info_finish"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="find_enclosing_mount">
+        <callback name="find_enclosing_mount"
+                  c:type="find_enclosing_mount"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="find_enclosing_mount_async">
+        <callback name="find_enclosing_mount_async"
+                  c:type="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">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="find_enclosing_mount_finish">
+        <callback name="find_enclosing_mount_finish"
+                  c:type="find_enclosing_mount_finish"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_display_name">
+        <callback name="set_display_name" c:type="set_display_name" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_display_name_async">
+        <callback name="set_display_name_async"
+                  c:type="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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_display_name_finish">
+        <callback name="set_display_name_finish"
+                  c:type="set_display_name_finish"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_settable_attributes">
+        <callback name="query_settable_attributes"
+                  c:type="query_settable_attributes"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_settable_attributes_async">
+        <callback name="query_settable_attributes_async"
+                  c:type="_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">
+        <callback name="query_settable_attributes_finish"
+                  c:type="_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"
+                  c:type="query_writable_namespaces"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_writable_namespaces_async">
+        <callback name="query_writable_namespaces_async"
+                  c:type="_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">
+        <callback name="query_writable_namespaces_finish"
+                  c:type="_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" c:type="set_attribute" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="FileAttributeType" c:type="GFileAttributeType"/>
+            </parameter>
+            <parameter name="value_p" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_attributes_from_info">
+        <callback name="set_attributes_from_info"
+                  c:type="set_attributes_from_info"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <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"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_attributes_async">
+        <callback name="set_attributes_async" c:type="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">
+              <type name="FileInfo" c:type="GFileInfo*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="6">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_attributes_finish">
+        <callback name="set_attributes_finish"
+                  c:type="set_attributes_finish"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+            <parameter name="info" transfer-ownership="none">
+              <type name="FileInfo" c:type="GFileInfo**"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="read_fn">
+        <callback name="read_fn" c:type="read_fn" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="read_async">
+        <callback name="read_async" c:type="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">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="read_finish">
+        <callback name="read_finish" c:type="read_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="append_to">
+        <callback name="append_to" c:type="append_to" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="append_to_async">
+        <callback name="append_to_async" c:type="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">
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="append_to_finish">
+        <callback name="append_to_finish" c:type="append_to_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create">
+        <callback name="create" c:type="create" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_async">
+        <callback name="create_async" c:type="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">
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_finish">
+        <callback name="create_finish" c:type="create_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="replace">
+        <callback name="replace" c:type="replace" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="make_backup" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="replace_async">
+        <callback name="replace_async" c:type="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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="make_backup" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="7">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="replace_finish">
+        <callback name="replace_finish" c:type="replace_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_file">
+        <callback name="delete_file" c:type="delete_file" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="delete_file_async">
+        <callback name="delete_file_async" c:type="_delete_file_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="delete_file_finish">
+        <callback name="delete_file_finish" c:type="_delete_file_finish">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="trash">
+        <callback name="trash" c:type="trash" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="trash_async">
+        <callback name="trash_async" c:type="_trash_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="trash_finish">
+        <callback name="trash_finish" c:type="_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" c:type="make_directory" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+        <callback name="make_directory_async" c:type="_make_directory_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="make_directory_finish">
+        <callback name="make_directory_finish" c:type="_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"
+                  c:type="make_symbolic_link"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="make_symbolic_link_async">
+        <callback name="make_symbolic_link_async"
+                  c:type="_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">
+        <callback name="make_symbolic_link_finish"
+                  c:type="_make_symbolic_link_finish">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="copy">
+        <callback name="copy" c:type="copy" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="progress_callback" transfer-ownership="none">
+              <type name="FileProgressCallback"
+                    c:type="GFileProgressCallback"/>
+            </parameter>
+            <parameter name="progress_callback_data" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy_async">
+        <callback name="copy_async" c:type="copy_async">
+          <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">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="progress_callback" transfer-ownership="none">
+              <type name="FileProgressCallback"
+                    c:type="GFileProgressCallback"/>
+            </parameter>
+            <parameter name="progress_callback_data" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="8">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy_finish">
+        <callback name="copy_finish" c:type="copy_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move">
+        <callback name="move" c:type="move" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="File" c:type="GFile*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="FileCopyFlags" c:type="GFileCopyFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="progress_callback" transfer-ownership="none">
+              <type name="FileProgressCallback"
+                    c:type="GFileProgressCallback"/>
+            </parameter>
+            <parameter name="progress_callback_data" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_async">
+        <callback name="move_async" c:type="_move_async">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="move_finish">
+        <callback name="move_finish" c:type="_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" c:type="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">
+              <type name="MountMountFlags" c:type="GMountMountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mount_mountable_finish">
+        <callback name="mount_mountable_finish"
+                  c:type="mount_mountable_finish"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmount_mountable">
+        <callback name="unmount_mountable" c:type="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">
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmount_mountable_finish">
+        <callback name="unmount_mountable_finish"
+                  c:type="unmount_mountable_finish"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_mountable">
+        <callback name="eject_mountable" c:type="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">
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_mountable_finish">
+        <callback name="eject_mountable_finish"
+                  c:type="eject_mountable_finish"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mount_enclosing_volume">
+        <callback name="mount_enclosing_volume"
+                  c:type="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">
+              <type name="MountMountFlags" c:type="GMountMountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mount_enclosing_volume_finish">
+        <callback name="mount_enclosing_volume_finish"
+                  c:type="mount_enclosing_volume_finish"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="monitor_dir">
+        <callback name="monitor_dir" c:type="monitor_dir" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="FileMonitorFlags" c:type="GFileMonitorFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="monitor_file">
+        <callback name="monitor_file" c:type="monitor_file" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="FileMonitorFlags" c:type="GFileMonitorFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="open_readwrite">
+        <callback name="open_readwrite" c:type="open_readwrite" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="open_readwrite_async">
+        <callback name="open_readwrite_async" c:type="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">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="open_readwrite_finish">
+        <callback name="open_readwrite_finish"
+                  c:type="open_readwrite_finish"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_readwrite">
+        <callback name="create_readwrite" c:type="create_readwrite" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_readwrite_async">
+        <callback name="create_readwrite_async"
+                  c:type="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">
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_readwrite_finish">
+        <callback name="create_readwrite_finish"
+                  c:type="create_readwrite_finish"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="replace_readwrite">
+        <callback name="replace_readwrite"
+                  c:type="replace_readwrite"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="make_backup" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="replace_readwrite_async">
+        <callback name="replace_readwrite_async"
+                  c:type="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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="make_backup" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="FileCreateFlags" c:type="GFileCreateFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="7">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="replace_readwrite_finish">
+        <callback name="replace_readwrite_finish"
+                  c:type="replace_readwrite_finish"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start_mountable">
+        <callback name="start_mountable" c:type="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">
+              <type name="DriveStartFlags" c:type="GDriveStartFlags"/>
+            </parameter>
+            <parameter name="start_operation" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start_mountable_finish">
+        <callback name="start_mountable_finish"
+                  c:type="start_mountable_finish"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop_mountable">
+        <callback name="stop_mountable" c:type="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">
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop_mountable_finish">
+        <callback name="stop_mountable_finish"
+                  c:type="stop_mountable_finish"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="supports_thread_contexts">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="unmount_mountable_with_operation">
+        <callback name="unmount_mountable_with_operation"
+                  c:type="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">
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmount_mountable_with_operation_finish">
+        <callback name="unmount_mountable_with_operation_finish"
+                  c:type="unmount_mountable_with_operation_finish"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_mountable_with_operation">
+        <callback name="eject_mountable_with_operation"
+                  c:type="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">
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_mountable_with_operation_finish">
+        <callback name="eject_mountable_with_operation_finish"
+                  c:type="eject_mountable_with_operation_finish"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="poll_mountable">
+        <callback name="poll_mountable" c:type="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">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="3">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="poll_mountable_finish">
+        <callback name="poll_mountable_finish"
+                  c:type="poll_mountable_finish"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="FileInfo"
+           c:type="GFileInfo"
+           doc="Stores information about a file system object referenced by a #GFile."
+           parent="GObject.Object"
+           glib:type-name="GFileInfo"
+           glib:get-type="g_file_info_get_type"
+           glib:type-struct="FileInfoClass">
+      <constructor name="new" c:identifier="g_file_info_new">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+      </constructor>
+      <method name="dup" c:identifier="g_file_info_dup">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+      </method>
+      <method name="copy_into" c:identifier="g_file_info_copy_into">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest_info" transfer-ownership="none">
+            <type name="FileInfo" c:type="GFileInfo*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_attribute" c:identifier="g_file_info_has_attribute">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_namespace" c:identifier="g_file_info_has_namespace">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="name_space" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_attributes"
+              c:identifier="g_file_info_list_attributes">
+        <return-value transfer-ownership="full">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="name_space" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_data"
+              c:identifier="g_file_info_get_attribute_data">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="FileAttributeType" c:type="GFileAttributeType*"/>
+          </parameter>
+          <parameter name="value_pp" direction="out" transfer-ownership="none">
+            <type name="any" c:type="gpointer*"/>
+          </parameter>
+          <parameter name="status" transfer-ownership="none">
+            <type name="FileAttributeStatus" c:type="GFileAttributeStatus*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_type"
+              c:identifier="g_file_info_get_attribute_type">
+        <return-value transfer-ownership="full">
+          <type name="FileAttributeType" c:type="GFileAttributeType"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_attribute"
+              c:identifier="g_file_info_remove_attribute">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <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="full">
+          <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="set_attribute_status"
+              c:identifier="g_file_info_set_attribute_status">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="status" transfer-ownership="none">
+            <type name="FileAttributeStatus" c:type="GFileAttributeStatus"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_as_string"
+              c:identifier="g_file_info_get_attribute_as_string">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </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">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_byte_string"
+              c:identifier="g_file_info_get_attribute_byte_string">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_boolean"
+              c:identifier="g_file_info_get_attribute_boolean">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_uint32"
+              c:identifier="g_file_info_get_attribute_uint32">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_int32"
+              c:identifier="g_file_info_get_attribute_int32">
+        <return-value transfer-ownership="none">
+          <type name="int32" c:type="gint32"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_uint64"
+              c:identifier="g_file_info_get_attribute_uint64">
+        <return-value transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_int64"
+              c:identifier="g_file_info_get_attribute_int64">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_object"
+              c:identifier="g_file_info_get_attribute_object">
+        <return-value transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attribute_stringv"
+              c:identifier="g_file_info_get_attribute_stringv">
+        <return-value transfer-ownership="full">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute" c:identifier="g_file_info_set_attribute">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="FileAttributeType" c:type="GFileAttributeType"/>
+          </parameter>
+          <parameter name="value_p" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_string"
+              c:identifier="g_file_info_set_attribute_string">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_byte_string"
+              c:identifier="g_file_info_set_attribute_byte_string">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_boolean"
+              c:identifier="g_file_info_set_attribute_boolean">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_uint32"
+              c:identifier="g_file_info_set_attribute_uint32">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_int32"
+              c:identifier="g_file_info_set_attribute_int32">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <type name="int32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_uint64"
+              c:identifier="g_file_info_set_attribute_uint64">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_int64"
+              c:identifier="g_file_info_set_attribute_int64">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_object"
+              c:identifier="g_file_info_set_attribute_object">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attribute_stringv"
+              c:identifier="g_file_info_set_attribute_stringv">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="attr_value" transfer-ownership="none">
+            <array c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_status" c:identifier="g_file_info_clear_status">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_file_type" c:identifier="g_file_info_get_file_type">
+        <return-value transfer-ownership="full">
+          <type name="FileType" c:type="GFileType"/>
+        </return-value>
+      </method>
+      <method name="get_is_hidden" c:identifier="g_file_info_get_is_hidden">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_backup" c:identifier="g_file_info_get_is_backup">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_symlink" c:identifier="g_file_info_get_is_symlink">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="g_file_info_get_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_display_name"
+              c:identifier="g_file_info_get_display_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_edit_name" c:identifier="g_file_info_get_edit_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_icon" c:identifier="g_file_info_get_icon">
+        <return-value transfer-ownership="none">
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="get_content_type"
+              c:identifier="g_file_info_get_content_type">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_size" c:identifier="g_file_info_get_size">
+        <return-value transfer-ownership="full">
+          <type name="GLib.offset" c:type="goffset"/>
+        </return-value>
+      </method>
+      <method name="get_modification_time"
+              c:identifier="g_file_info_get_modification_time">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_symlink_target"
+              c:identifier="g_file_info_get_symlink_target">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_etag" c:identifier="g_file_info_get_etag">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_sort_order" c:identifier="g_file_info_get_sort_order">
+        <return-value transfer-ownership="none">
+          <type name="int32" c:type="gint32"/>
+        </return-value>
+      </method>
+      <method name="set_attribute_mask"
+              c:identifier="g_file_info_set_attribute_mask">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="FileAttributeMatcher" c:type="GFileAttributeMatcher*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_attribute_mask"
+              c:identifier="g_file_info_unset_attribute_mask">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_file_type" c:identifier="g_file_info_set_file_type">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="FileType" c:type="GFileType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_is_hidden" c:identifier="g_file_info_set_is_hidden">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_hidden" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_is_symlink" c:identifier="g_file_info_set_is_symlink">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_symlink" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_name" c:identifier="g_file_info_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_display_name"
+              c:identifier="g_file_info_set_display_name">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="display_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_edit_name" c:identifier="g_file_info_set_edit_name">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="edit_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon" c:identifier="g_file_info_set_icon">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <type name="Icon" c:type="GIcon*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_content_type"
+              c:identifier="g_file_info_set_content_type">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="content_type" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size" c:identifier="g_file_info_set_size">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="GLib.offset" c:type="goffset"/>
+          </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_symlink_target"
+              c:identifier="g_file_info_set_symlink_target">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="symlink_target" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sort_order" c:identifier="g_file_info_set_sort_order">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_order" transfer-ownership="none">
+            <type name="int32" c:type="gint32"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <record name="FileInfoClass"
+            c:type="GFileInfoClass"
+            glib:is-gtype-struct-for="FileInfo">
+    </record>
+    <class name="FileInputStream"
+           c:type="GFileInputStream"
+           doc="A subclass of GInputStream for opened files. This adds
+a few file-specific operations and seeking.
+#GFileInputStream implements #GSeekable."
+           parent="InputStream"
+           glib:type-name="GFileInputStream"
+           glib:get-type="g_file_input_stream_get_type"
+           glib:type-struct="FileInputStreamClass">
+      <implements name="Seekable"/>
+      <virtual-method name="tell">
+        <return-value transfer-ownership="full">
+          <type name="GLib.offset" c:type="goffset"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_seek">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="seek" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="GLib.offset" c:type="goffset"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GLib.SeekType" c:type="GSeekType"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info" invoker="query_info" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info_async" invoker="query_info_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info_finish" throws="1">
+        <return-value transfer-ownership="full">
+          <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>
+      <method name="query_info"
+              c:identifier="g_file_input_stream_query_info"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_info_async"
+              c:identifier="g_file_input_stream_query_info_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_info_finish"
+              c:identifier="g_file_input_stream_query_info_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <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" c:type="tell">
+          <return-value transfer-ownership="full">
+            <type name="GLib.offset" 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" c:type="can_seek">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="seek" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="GLib.offset" c:type="goffset"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="GLib.SeekType" c:type="GSeekType"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info">
+        <callback name="query_info" c:type="query_info" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info_async">
+        <callback name="query_info_async" c:type="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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info_finish">
+        <callback name="query_info_finish"
+                  c:type="query_info_finish"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="FileInputStreamPrivate" c:type="GFileInputStreamPrivate">
+    </record>
+    <class name="FileMonitor"
+           c:type="GFileMonitor"
+           doc="Watches for changes to a file."
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GFileMonitor"
+           glib:get-type="g_file_monitor_get_type"
+           glib:type-struct="FileMonitorClass">
+      <virtual-method name="cancel" invoker="cancel">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <method name="cancel" c:identifier="g_file_monitor_cancel">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_cancelled" c:identifier="g_file_monitor_is_cancelled">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_rate_limit"
+              c:identifier="g_file_monitor_set_rate_limit">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="limit_msecs" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="emit_event" c:identifier="g_file_monitor_emit_event">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" 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>
+      </method>
+      <property name="cancelled">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="rate-limit" writable="1">
+        <type name="int" c:type="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">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="File" c:type="GFile"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="File" c:type="GFile"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <type name="FileMonitorEvent" c:type="GFileMonitorEvent"/>
+          </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" c:type="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" c:type="cancel">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="FileMonitorEvent"
+                 doc="Specifies what type of event a monitor event is."
+                 glib:type-name="GFileMonitorEvent"
+                 glib:get-type="g_file_monitor_event_get_type"
+                 c:type="GFileMonitorEvent">
+      <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"
+              doc="by file renames (moves) and send a single G_FILE_MONITOR_EVENT_MOVED
+behaviour -without specifying this flag- is to send single DELETED
+and CREATED events).
+Flags used to set what a #GFileMonitor will watch for."
+              glib:type-name="GFileMonitorFlags"
+              glib:get-type="g_file_monitor_flags_get_type"
+              c:type="GFileMonitorFlags">
+      <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">
+    </record>
+    <class name="FileOutputStream"
+           c:type="GFileOutputStream"
+           doc="A subclass of GOutputStream for opened files. This adds
+a few file-specific operations and seeking and truncating.
+#GFileOutputStream implements GSeekable."
+           parent="OutputStream"
+           glib:type-name="GFileOutputStream"
+           glib:get-type="g_file_output_stream_get_type"
+           glib:type-struct="FileOutputStreamClass">
+      <implements name="Seekable"/>
+      <virtual-method name="tell">
+        <return-value transfer-ownership="full">
+          <type name="GLib.offset" c:type="goffset"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_seek">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="seek" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="GLib.offset" c:type="goffset"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GLib.SeekType" c:type="GSeekType"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="can_truncate">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="truncate_fn" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="GLib.offset" c:type="goffset"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info" invoker="query_info" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info_async" invoker="query_info_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="query_info_finish" throws="1">
+        <return-value transfer-ownership="full">
+          <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="get_etag" invoker="get_etag">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <method name="query_info"
+              c:identifier="g_file_output_stream_query_info"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_info_async"
+              c:identifier="g_file_output_stream_query_info_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attributes" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_info_finish"
+              c:identifier="g_file_output_stream_query_info_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="FileInfo" c:type="GFileInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_etag" c:identifier="g_file_output_stream_get_etag">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </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" c:type="tell">
+          <return-value transfer-ownership="full">
+            <type name="GLib.offset" 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" c:type="can_seek">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="seek" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="GLib.offset" c:type="goffset"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="GLib.SeekType" c:type="GSeekType"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_truncate">
+        <callback name="can_truncate" c:type="can_truncate">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="truncate_fn" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="GLib.offset" c:type="goffset"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info">
+        <callback name="query_info" c:type="query_info" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info_async">
+        <callback name="query_info_async" c:type="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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="query_info_finish">
+        <callback name="query_info_finish"
+                  c:type="query_info_finish"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_etag">
+          <return-value transfer-ownership="full">
+            <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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="FileOutputStreamPrivate" c:type="GFileOutputStreamPrivate">
+    </record>
+    <callback name="FileProgressCallback"
+              c:type="GFileProgressCallback"
+              doc="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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="current_num_bytes" transfer-ownership="none">
+          <type name="GLib.offset" c:type="goffset"/>
+        </parameter>
+        <parameter name="total_num_bytes" transfer-ownership="none">
+          <type name="GLib.offset" c:type="goffset"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="FileQueryInfoFlags"
+              doc="Flags used when querying a #GFileInfo."
+              glib:type-name="GFileQueryInfoFlags"
+              glib:get-type="g_file_query_info_flags_get_type"
+              c:type="GFileQueryInfoFlags">
+      <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="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.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="file_contents" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="file_size" transfer-ownership="none">
+          <type name="GLib.offset" c:type="goffset"/>
+        </parameter>
+        <parameter name="callback_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="FileType"
+                 doc="(Unix systems).
+block device, or character device.
+Indicates the file&apos;s on-disk type."
+                 glib:type-name="GFileType"
+                 glib:get-type="g_file_type_get_type"
+                 c:type="GFileType">
+      <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:type="GFilenameCompleter"
+           doc="Completes filenames based on files that exist within the file system."
+           parent="GObject.Object"
+           glib:type-name="GFilenameCompleter"
+           glib:get-type="g_filename_completer_get_type"
+           glib:type-struct="FilenameCompleterClass">
+      <constructor name="new" c:identifier="g_filename_completer_new">
+        <return-value transfer-ownership="full">
+          <type name="FilenameCompleter" c:type="GFilenameCompleter*"/>
+        </return-value>
+      </constructor>
+      <method name="get_completion_suffix"
+              c:identifier="g_filename_completer_get_completion_suffix">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="initial_text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_completions"
+              c:identifier="g_filename_completer_get_completions">
+        <return-value transfer-ownership="full">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="initial_text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_dirs_only"
+              c:identifier="g_filename_completer_set_dirs_only">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dirs_only" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="got-completion-data">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="FilesystemPreviewType"
+                 doc="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."
+                 glib:type-name="GFilesystemPreviewType"
+                 glib:get-type="g_filesystem_preview_type_get_type"
+                 c:type="GFilesystemPreviewType">
+      <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:type="GFilterInputStream"
+           doc="A base class for all input streams that work on an underlying stream."
+           parent="InputStream"
+           glib:type-name="GFilterInputStream"
+           glib:get-type="g_filter_input_stream_get_type"
+           glib:type-struct="FilterInputStreamClass">
+      <method name="get_base_stream"
+              c:identifier="g_filter_input_stream_get_base_stream">
+        <return-value transfer-ownership="full">
+          <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">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_close_base_stream"
+              c:identifier="g_filter_input_stream_set_close_base_stream">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="close_base" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="base-stream" writable="1" construct-only="1">
+        <type name="InputStream" c:type="GInputStream"/>
+      </property>
+      <property name="close-base-stream" writable="1" construct-only="1">
+        <type name="boolean" c:type="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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="FilterOutputStream"
+           c:type="GFilterOutputStream"
+           doc="A base class for all output streams that work on an underlying stream."
+           parent="OutputStream"
+           glib:type-name="GFilterOutputStream"
+           glib:get-type="g_filter_output_stream_get_type"
+           glib:type-struct="FilterOutputStreamClass">
+      <method name="get_base_stream"
+              c:identifier="g_filter_output_stream_get_base_stream">
+        <return-value transfer-ownership="full">
+          <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">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_close_base_stream"
+              c:identifier="g_filter_output_stream_set_close_base_stream">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="close_base" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="base-stream" writable="1" construct-only="1">
+        <type name="OutputStream" c:type="GOutputStream"/>
+      </property>
+      <property name="close-base-stream" writable="1" construct-only="1">
+        <type name="boolean" c:type="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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="IOErrorEnum"
+                 doc="already interacted with the user. Do not display any error dialog.
+open and can&apos;t open any more. Duplicate descriptors do count toward
+this limit. Since 2.20
+Error codes returned by GIO functions."
+                 glib:type-name="GIOErrorEnum"
+                 glib:get-type="g_io_error_enum_get_type"
+                 c:type="GIOErrorEnum"
+                 glib:error-quark="g_io_error_quark">
+      <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"/>
+    </enumeration>
+    <record name="IOExtension" c:type="GIOExtension">
+      <method name="get_name" c:identifier="g_io_extension_get_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_priority" c:identifier="g_io_extension_get_priority">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="ref_class" c:identifier="g_io_extension_ref_class">
+        <return-value transfer-ownership="full">
+          <type name="GObject.TypeClass" c:type="GTypeClass*"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="IOExtensionPoint" c:type="GIOExtensionPoint">
+      <method name="set_required_type"
+              c:identifier="g_io_extension_point_set_required_type">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_required_type"
+              c:identifier="g_io_extension_point_get_required_type">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="get_extensions"
+              c:identifier="g_io_extension_point_get_extensions">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="get_extension_by_name"
+              c:identifier="g_io_extension_point_get_extension_by_name">
+        <return-value transfer-ownership="full">
+          <type name="IOExtension" c:type="GIOExtension*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <class name="IOModule"
+           c:type="GIOModule"
+           doc="Opaque module base class for extending GIO."
+           parent="GObject.TypeModule"
+           glib:type-name="GIOModule"
+           glib:get-type="g_io_module_get_type"
+           glib:type-struct="IOModuleClass">
+      <implements name="GObject.TypePlugin"/>
+      <constructor name="new" c:identifier="g_io_module_new">
+        <return-value transfer-ownership="full">
+          <type name="IOModule" c:type="GIOModule*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="query"
+                c:identifier="g_io_module_query"
+                doc="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&apos;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()."
+                version="2.24">
+        <return-value transfer-ownership="full">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </function>
+      <method name="load"
+              c:identifier="g_io_module_load"
+              doc="Required API for GIO modules to implement.
+This function is ran after the module has been loaded into GIO,
+to initialize the module.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unload"
+              c:identifier="g_io_module_unload"
+              doc="Required API for GIO modules to implement.
+This function is ran when the module is being unloaded from GIO,
+to finalize the module.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </class>
+    <record name="IOModuleClass"
+            c:type="GIOModuleClass"
+            glib:is-gtype-struct-for="IOModule">
+    </record>
+    <record name="IOSchedulerJob"
+            c:type="GIOSchedulerJob"
+            doc="Opaque class for definining and scheduling IO jobs.">
+      <method name="send_to_mainloop"
+              c:identifier="g_io_scheduler_job_send_to_mainloop">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+          </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="send_to_mainloop_async"
+              c:identifier="g_io_scheduler_job_send_to_mainloop_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
+          </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>
+    </record>
+    <callback name="IOSchedulerJobFunc"
+              c:type="GIOSchedulerJobFunc"
+              doc="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)">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="job" transfer-ownership="none">
+          <type name="IOSchedulerJob" c:type="GIOSchedulerJob*"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="IOStream"
+           c:type="GIOStream"
+           doc="Base class for read-write streams."
+           parent="GObject.Object"
+           glib:type-name="GIOStream"
+           glib:get-type="g_io_stream_get_type"
+           glib:type-struct="IOStreamClass">
+      <virtual-method name="get_input_stream" invoker="get_input_stream">
+        <return-value transfer-ownership="full">
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_output_stream" invoker="get_output_stream">
+        <return-value transfer-ownership="full">
+          <type name="OutputStream" c:type="GOutputStream*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="close_fn" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="close_async" invoker="close_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="close_finish" invoker="close_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_input_stream"
+              c:identifier="g_io_stream_get_input_stream">
+        <return-value transfer-ownership="full">
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+      </method>
+      <method name="get_output_stream"
+              c:identifier="g_io_stream_get_output_stream">
+        <return-value transfer-ownership="full">
+          <type name="OutputStream" c:type="GOutputStream*"/>
+        </return-value>
+      </method>
+      <method name="close" c:identifier="g_io_stream_close" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="close_async" c:identifier="g_io_stream_close_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close_finish"
+              c:identifier="g_io_stream_close_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_closed" c:identifier="g_io_stream_is_closed">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_pending" c:identifier="g_io_stream_has_pending">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_pending"
+              c:identifier="g_io_stream_set_pending"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="clear_pending" c:identifier="g_io_stream_clear_pending">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="closed" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="input-stream">
+        <type name="InputStream" c:type="GInputStream"/>
+      </property>
+      <property name="output-stream">
+        <type name="OutputStream" c:type="GOutputStream"/>
+      </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" c:type="get_input_stream">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_output_stream">
+          <return-value transfer-ownership="full">
+            <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" c:type="close_fn" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_async">
+        <callback name="close_async" c:type="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">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_finish">
+        <callback name="close_finish" c:type="close_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="g_reserved1">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved6">
+        <callback name="g_reserved6" c:type="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved7">
+        <callback name="g_reserved7" c:type="_g_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved8">
+        <callback name="g_reserved8" c:type="_g_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved9">
+        <callback name="g_reserved9" c:type="_g_reserved9">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved10">
+        <callback name="g_reserved10" c:type="_g_reserved10">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="IOStreamPrivate" c:type="GIOStreamPrivate">
+    </record>
+    <interface name="Icon"
+               c:type="GIcon"
+               doc="An abstract type that specifies an icon."
+               glib:type-name="GIcon"
+               glib:get-type="g_icon_get_type"
+               glib:type-struct="IconIface">
+      <virtual-method name="hash">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="equal" invoker="equal">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon2" transfer-ownership="none">
+            <type name="Icon" c:type="GIcon*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="to_tokens">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tokens" transfer-ownership="none">
+            <type name="GLib.PtrArray" c:type="GPtrArray*"/>
+          </parameter>
+          <parameter name="out_version"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="equal" c:identifier="g_icon_equal">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon2" transfer-ownership="none">
+            <type name="Icon" c:type="GIcon*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string" c:identifier="g_icon_to_string">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="IconIface"
+            c:type="GIconIface"
+            glib:is-gtype-struct-for="Icon"
+            doc="contain any whitespace. Don&apos;t implement if the #GIcon can&apos;t be
+serialized (Since 2.20).
+the tokens are malformed. Don&apos;t implement if the #GIcon can&apos;t be
+serialized (Since 2.20).
+GIconIface is used to implement GIcon types for various
+different systems. See #GThemedIcon and #GLoadableIcon for
+examples of how to implement this interface.">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="hash">
+        <callback name="hash" c:type="hash">
+          <return-value transfer-ownership="none">
+            <type name="uint" 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" c:type="equal">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="Icon" c:type="GIcon*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="to_tokens">
+        <callback name="to_tokens" c:type="to_tokens">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="GLib.PtrArray" c:type="GPtrArray*"/>
+            </parameter>
+            <parameter name="out_version"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="from_tokens">
+        <callback name="from_tokens" c:type="from_tokens" throws="1">
+          <return-value transfer-ownership="full">
+            <type name="Icon" c:type="GIcon*"/>
+          </return-value>
+          <parameters>
+            <parameter name="tokens" transfer-ownership="none">
+              <array c:type="gchar**">
+                <type name="utf8"/>
+              </array>
+            </parameter>
+            <parameter name="num_tokens" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="version" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="InetAddress"
+           c:type="GInetAddress"
+           parent="GObject.Object"
+           glib:type-name="GInetAddress"
+           glib:get-type="g_inet_address_get_type"
+           glib:type-struct="InetAddressClass">
+      <constructor name="new_from_string"
+                   c:identifier="g_inet_address_new_from_string">
+        <return-value transfer-ownership="full">
+          <type name="InetAddress" c:type="GInetAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_bytes"
+                   c:identifier="g_inet_address_new_from_bytes">
+        <return-value transfer-ownership="full">
+          <type name="InetAddress" c:type="GInetAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="bytes" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="family" transfer-ownership="none">
+            <type name="SocketFamily" c:type="GSocketFamily"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_loopback"
+                   c:identifier="g_inet_address_new_loopback">
+        <return-value transfer-ownership="full">
+          <type name="InetAddress" c:type="GInetAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="family" transfer-ownership="none">
+            <type name="SocketFamily" c:type="GSocketFamily"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_any" c:identifier="g_inet_address_new_any">
+        <return-value transfer-ownership="full">
+          <type name="InetAddress" c:type="GInetAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="family" transfer-ownership="none">
+            <type name="SocketFamily" c:type="GSocketFamily"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="to_string" invoker="to_string">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="to_bytes" invoker="to_bytes">
+        <return-value transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+      </virtual-method>
+      <method name="to_string" c:identifier="g_inet_address_to_string">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="to_bytes" c:identifier="g_inet_address_to_bytes">
+        <return-value transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_native_size"
+              c:identifier="g_inet_address_get_native_size">
+        <return-value transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="get_family" c:identifier="g_inet_address_get_family">
+        <return-value transfer-ownership="full">
+          <type name="SocketFamily" c:type="GSocketFamily"/>
+        </return-value>
+      </method>
+      <method name="get_is_any" c:identifier="g_inet_address_get_is_any">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_loopback"
+              c:identifier="g_inet_address_get_is_loopback">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_link_local"
+              c:identifier="g_inet_address_get_is_link_local">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_site_local"
+              c:identifier="g_inet_address_get_is_site_local">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_multicast"
+              c:identifier="g_inet_address_get_is_multicast">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_mc_global"
+              c:identifier="g_inet_address_get_is_mc_global">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_mc_link_local"
+              c:identifier="g_inet_address_get_is_mc_link_local">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_mc_node_local"
+              c:identifier="g_inet_address_get_is_mc_node_local">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_mc_org_local"
+              c:identifier="g_inet_address_get_is_mc_org_local">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_mc_site_local"
+              c:identifier="g_inet_address_get_is_mc_site_local">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="bytes" writable="1" construct-only="1">
+        <type name="any" c:type="gpointer"/>
+      </property>
+      <property name="family" writable="1" construct-only="1">
+        <type name="SocketFamily" c:type="GSocketFamily"/>
+      </property>
+      <property name="is-any">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="is-link-local">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="is-loopback">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="is-mc-global">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="is-mc-link-local">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="is-mc-node-local">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="is-mc-org-local">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="is-mc-site-local">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="is-multicast">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="is-site-local">
+        <type name="boolean" c:type="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" c:type="to_string">
+          <return-value transfer-ownership="full">
+            <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" c:type="to_bytes">
+          <return-value transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </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">
+    </record>
+    <class name="InetSocketAddress"
+           c:type="GInetSocketAddress"
+           parent="SocketAddress"
+           glib:type-name="GInetSocketAddress"
+           glib:get-type="g_inet_socket_address_get_type"
+           glib:type-struct="InetSocketAddressClass">
+      <implements name="SocketConnectable"/>
+      <constructor name="new" c:identifier="g_inet_socket_address_new">
+        <return-value transfer-ownership="full">
+          <type name="InetSocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <type name="InetAddress" c:type="GInetAddress*"/>
+          </parameter>
+          <parameter name="port" transfer-ownership="none">
+            <type name="uint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_address"
+              c:identifier="g_inet_socket_address_get_address">
+        <return-value transfer-ownership="full">
+          <type name="InetAddress" c:type="GInetAddress*"/>
+        </return-value>
+      </method>
+      <method name="get_port" c:identifier="g_inet_socket_address_get_port">
+        <return-value transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <property name="address" writable="1" construct-only="1">
+        <type name="InetAddress" c:type="GInetAddress"/>
+      </property>
+      <property name="port" writable="1" construct-only="1">
+        <type name="uint" c:type="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">
+    </record>
+    <interface name="Initable"
+               c:type="GInitable"
+               doc="Interface for initializable objects."
+               version="2.22"
+               glib:type-name="GInitable"
+               glib:get-type="g_initable_get_type"
+               glib:type-struct="InitableIface">
+      <virtual-method name="init" invoker="init" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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>
+      <method name="init" c:identifier="g_initable_init" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="InitableIface"
+            c:type="GInitableIface"
+            glib:is-gtype-struct-for="Initable"
+            doc="Provides an interface for initializing object such that initialization
+may fail."
+            version="2.22">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="init">
+        <callback name="init" c:type="init" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="InputStream"
+           c:type="GInputStream"
+           doc="Base class for streaming input operations."
+           parent="GObject.Object"
+           glib:type-name="GInputStream"
+           glib:get-type="g_input_stream_get_type"
+           glib:type-struct="InputStreamClass">
+      <virtual-method name="read_fn" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="skip" invoker="skip" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="close_fn" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="read_async" invoker="read_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="6">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="read_finish" invoker="read_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="skip_async" invoker="skip_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="skip_finish" invoker="skip_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="close_async" invoker="close_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="close_finish" invoker="close_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="read" c:identifier="g_input_stream_read" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_all"
+              c:identifier="g_input_stream_read_all"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="bytes_read"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="skip" c:identifier="g_input_stream_skip" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close" c:identifier="g_input_stream_close" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="read_async" c:identifier="g_input_stream_read_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="6">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="read_finish"
+              c:identifier="g_input_stream_read_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="skip_async" c:identifier="g_input_stream_skip_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="skip_finish"
+              c:identifier="g_input_stream_skip_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close_async" c:identifier="g_input_stream_close_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close_finish"
+              c:identifier="g_input_stream_close_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_closed" c:identifier="g_input_stream_is_closed">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_pending" c:identifier="g_input_stream_has_pending">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_pending"
+              c:identifier="g_input_stream_set_pending"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="clear_pending" c:identifier="g_input_stream_clear_pending">
+        <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="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" c:type="read_fn" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="ssize_t" 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="any" c:type="void*"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <type name="size_t" c:type="gsize"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="skip">
+        <callback name="skip" c:type="skip" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="ssize_t" 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">
+              <type name="size_t" c:type="gsize"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_fn">
+        <callback name="close_fn" c:type="close_fn" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="read_async">
+        <callback name="read_async" c:type="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">
+              <type name="any" c:type="void*"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <type name="size_t" c:type="gsize"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="6">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="read_finish">
+        <callback name="read_finish" c:type="read_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="ssize_t" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="skip_async">
+        <callback name="skip_async" c:type="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">
+              <type name="size_t" c:type="gsize"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="skip_finish">
+        <callback name="skip_finish" c:type="skip_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="ssize_t" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_async">
+        <callback name="close_async" c:type="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">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_finish">
+        <callback name="close_finish" c:type="close_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="g_reserved1">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="InputStreamPrivate" c:type="GInputStreamPrivate">
+    </record>
+    <record name="InputVector"
+            c:type="GInputVector"
+            doc="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."
+            version="2.22">
+      <field name="buffer" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="size_t" c:type="gsize"/>
+      </field>
+    </record>
+    <interface name="LoadableIcon"
+               c:type="GLoadableIcon"
+               doc="Generic type for all kinds of icons that can be loaded
+as a stream."
+               glib:type-name="GLoadableIcon"
+               glib:get-type="g_loadable_icon_get_type"
+               glib:type-struct="LoadableIconIface">
+      <prerequisite name="Icon"/>
+      <virtual-method name="load" invoker="load" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <array c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="load_async" invoker="load_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="load_finish" invoker="load_finish" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <array c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="load" c:identifier="g_loadable_icon_load" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <array c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_async" c:identifier="g_loadable_icon_load_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_finish"
+              c:identifier="g_loadable_icon_load_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="InputStream" c:type="GInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="res" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <array c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="LoadableIconIface"
+            c:type="GLoadableIconIface"
+            glib:is-gtype-struct-for="LoadableIcon"
+            doc="Interface for icons that can be loaded as a stream.">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="load">
+        <callback name="load" c:type="load" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <array c:type="char**">
+                <type name="utf8"/>
+              </array>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="load_async">
+        <callback name="load_async" c:type="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">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="load_finish">
+        <callback name="load_finish" c:type="load_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <array c:type="char**">
+                <type name="utf8"/>
+              </array>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="MemoryInputStream"
+           c:type="GMemoryInputStream"
+           doc="Implements #GInputStream for arbitrary memory chunks."
+           parent="InputStream"
+           glib:type-name="GMemoryInputStream"
+           glib:get-type="g_memory_input_stream_get_type"
+           glib:type-struct="MemoryInputStreamClass">
+      <implements name="Seekable"/>
+      <constructor name="new" c:identifier="g_memory_input_stream_new">
+        <return-value transfer-ownership="full">
+          <type name="MemoryInputStream" c:type="GInputStream*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_data"
+                   c:identifier="g_memory_input_stream_new_from_data">
+        <return-value transfer-ownership="full">
+          <type name="MemoryInputStream" c:type="GInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="add_data" c:identifier="g_memory_input_stream_add_data">
+        <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>
+          <parameter name="len" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="MemoryInputStreamPrivate" c:type="GMemoryInputStreamPrivate">
+    </record>
+    <class name="MemoryOutputStream"
+           c:type="GMemoryOutputStream"
+           doc="Implements #GOutputStream for arbitrary memory chunks."
+           parent="OutputStream"
+           glib:type-name="GMemoryOutputStream"
+           glib:get-type="g_memory_output_stream_get_type"
+           glib:type-struct="MemoryOutputStreamClass">
+      <implements name="Seekable"/>
+      <constructor name="new" c:identifier="g_memory_output_stream_new">
+        <return-value transfer-ownership="full">
+          <type name="MemoryOutputStream" c:type="GOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="realloc_function"
+                     transfer-ownership="none"
+                     scope="call"
+                     destroy="3">
+            <type name="ReallocFunc" c:type="GReallocFunc"/>
+          </parameter>
+          <parameter name="destroy_function"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_data" c:identifier="g_memory_output_stream_get_data">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="get_size" c:identifier="g_memory_output_stream_get_size">
+        <return-value transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="get_data_size"
+              c:identifier="g_memory_output_stream_get_data_size">
+        <return-value transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </return-value>
+      </method>
+      <property name="data" writable="1" construct-only="1">
+        <type name="any" c:type="gpointer"/>
+      </property>
+      <property name="data-size">
+        <type name="ulong" c:type="gulong"/>
+      </property>
+      <property name="destroy-function" writable="1" construct-only="1">
+        <type name="any" c:type="gpointer"/>
+      </property>
+      <property name="realloc-function" writable="1" construct-only="1">
+        <type name="any" c:type="gpointer"/>
+      </property>
+      <property name="size" writable="1" construct-only="1">
+        <type name="ulong" c:type="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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="MemoryOutputStreamPrivate"
+            c:type="GMemoryOutputStreamPrivate">
+    </record>
+    <interface name="Mount"
+               c:type="GMount"
+               doc="A handle to an object implementing the #GMountIface interface."
+               glib:type-name="GMount"
+               glib:get-type="g_mount_get_type"
+               glib:type-struct="MountIface">
+      <virtual-method name="get_root" invoker="get_root">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_name" invoker="get_name">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_icon" invoker="get_icon">
+        <return-value transfer-ownership="full">
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_uuid" invoker="get_uuid">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_volume" invoker="get_volume">
+        <return-value transfer-ownership="full">
+          <type name="Volume" c:type="GVolume*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_drive" invoker="get_drive">
+        <return-value transfer-ownership="full">
+          <type name="Drive" c:type="GDrive*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_unmount" invoker="can_unmount">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_eject" invoker="can_eject">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unmount" invoker="unmount">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unmount_finish"
+                      invoker="unmount_finish"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject" invoker="eject">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_finish" invoker="eject_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remount" invoker="remount">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountMountFlags" c:type="GMountMountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remount_finish"
+                      invoker="remount_finish"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="guess_content_type" invoker="guess_content_type">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="force_rescan" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="guess_content_type_finish"
+                      invoker="guess_content_type_finish"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="guess_content_type_sync"
+                      invoker="guess_content_type_sync"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="force_rescan" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unmount_with_operation"
+                      invoker="unmount_with_operation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unmount_with_operation_finish"
+                      invoker="unmount_with_operation_finish"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_with_operation"
+                      invoker="eject_with_operation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_with_operation_finish"
+                      invoker="eject_with_operation_finish"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_default_location"
+                      invoker="get_default_location">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_root" c:identifier="g_mount_get_root">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <method name="get_default_location"
+              c:identifier="g_mount_get_default_location">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="g_mount_get_name">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_icon" c:identifier="g_mount_get_icon">
+        <return-value transfer-ownership="full">
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="get_uuid" c:identifier="g_mount_get_uuid">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_volume" c:identifier="g_mount_get_volume">
+        <return-value transfer-ownership="full">
+          <type name="Volume" c:type="GVolume*"/>
+        </return-value>
+      </method>
+      <method name="get_drive" c:identifier="g_mount_get_drive">
+        <return-value transfer-ownership="full">
+          <type name="Drive" c:type="GDrive*"/>
+        </return-value>
+      </method>
+      <method name="can_unmount" c:identifier="g_mount_can_unmount">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="can_eject" c:identifier="g_mount_can_eject">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="unmount" c:identifier="g_mount_unmount">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmount_finish"
+              c:identifier="g_mount_unmount_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject" c:identifier="g_mount_eject">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_finish"
+              c:identifier="g_mount_eject_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remount" c:identifier="g_mount_remount">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountMountFlags" c:type="GMountMountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remount_finish"
+              c:identifier="g_mount_remount_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="guess_content_type"
+              c:identifier="g_mount_guess_content_type">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="force_rescan" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="guess_content_type_finish"
+              c:identifier="g_mount_guess_content_type_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="guess_content_type_sync"
+              c:identifier="g_mount_guess_content_type_sync"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="force_rescan" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_shadowed" c:identifier="g_mount_is_shadowed">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="shadow" c:identifier="g_mount_shadow">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unshadow" c:identifier="g_mount_unshadow">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unmount_with_operation"
+              c:identifier="g_mount_unmount_with_operation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmount_with_operation_finish"
+              c:identifier="g_mount_unmount_with_operation_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_with_operation"
+              c:identifier="g_mount_eject_with_operation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_with_operation_finish"
+              c:identifier="g_mount_eject_with_operation_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="pre-unmount">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unmounted">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </interface>
+    <record name="MountIface"
+            c:type="GMountIface"
+            glib:is-gtype-struct-for="Mount"
+            doc="See g_mount_guess_content_type() for more information on content
+type guessing. This operation was added in 2.18.
+Interface for implementing operations for mounts.">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="changed">
+        <callback name="changed" c:type="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" c:type="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" c:type="get_root">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_name">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_icon">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_uuid">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_volume">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_drive">
+          <return-value transfer-ownership="full">
+            <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" c:type="can_unmount">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="can_eject">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="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">
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmount_finish">
+        <callback name="unmount_finish" c:type="unmount_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject">
+        <callback name="eject" c:type="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">
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_finish">
+        <callback name="eject_finish" c:type="eject_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remount">
+        <callback name="remount" c:type="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">
+              <type name="MountMountFlags" c:type="GMountMountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remount_finish">
+        <callback name="remount_finish" c:type="remount_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="guess_content_type">
+        <callback name="guess_content_type" c:type="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">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="guess_content_type_finish">
+        <callback name="guess_content_type_finish"
+                  c:type="guess_content_type_finish"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="guess_content_type_sync">
+        <callback name="guess_content_type_sync"
+                  c:type="guess_content_type_sync"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pre_unmount">
+        <callback name="pre_unmount" c:type="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"
+                  c:type="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">
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unmount_with_operation_finish">
+        <callback name="unmount_with_operation_finish"
+                  c:type="unmount_with_operation_finish"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_with_operation">
+        <callback name="eject_with_operation" c:type="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">
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_with_operation_finish">
+        <callback name="eject_with_operation_finish"
+                  c:type="eject_with_operation_finish"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_default_location">
+        <callback name="get_default_location" c:type="get_default_location">
+          <return-value transfer-ownership="full">
+            <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"
+                 doc="Flags used when mounting a mount."
+                 glib:type-name="GMountMountFlags"
+                 glib:get-type="g_mount_mount_flags_get_type"
+                 c:type="GMountMountFlags">
+      <member name="none"
+              value="0"
+              c:identifier="G_MOUNT_MOUNT_NONE"
+              glib:nick="none"/>
+    </enumeration>
+    <class name="MountOperation"
+           c:type="GMountOperation"
+           doc="Class for providing authentication methods for mounting operations,
+such as mounting a file locally, or authenticating with a server."
+           parent="GObject.Object"
+           glib:type-name="GMountOperation"
+           glib:get-type="g_mount_operation_get_type"
+           glib:type-struct="MountOperationClass">
+      <constructor name="new" c:identifier="g_mount_operation_new">
+        <return-value transfer-ownership="full">
+          <type name="MountOperation" c:type="GMountOperation*"/>
+        </return-value>
+      </constructor>
+      <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="set_username"
+              c:identifier="g_mount_operation_set_username">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="username" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_password"
+              c:identifier="g_mount_operation_get_password">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="set_password"
+              c:identifier="g_mount_operation_set_password">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="password" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_anonymous"
+              c:identifier="g_mount_operation_get_anonymous">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_anonymous"
+              c:identifier="g_mount_operation_set_anonymous">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="anonymous" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_domain" c:identifier="g_mount_operation_get_domain">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="set_domain" c:identifier="g_mount_operation_set_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="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_password_save"
+              c:identifier="g_mount_operation_get_password_save">
+        <return-value transfer-ownership="full">
+          <type name="PasswordSave" c:type="GPasswordSave"/>
+        </return-value>
+      </method>
+      <method name="set_password_save"
+              c:identifier="g_mount_operation_set_password_save">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="save" transfer-ownership="none">
+            <type name="PasswordSave" c:type="GPasswordSave"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_choice" c:identifier="g_mount_operation_get_choice">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="set_choice" c:identifier="g_mount_operation_set_choice">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="choice" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reply" c:identifier="g_mount_operation_reply">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="MountOperationResult" c:type="GMountOperationResult"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="anonymous" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="choice" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="domain" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="password" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="password-save" writable="1">
+        <type name="PasswordSave" c:type="GPasswordSave"/>
+      </property>
+      <property name="username" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </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">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="ask-password">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="p2" transfer-ownership="none">
+            <type name="AskPasswordFlags" c:type="GAskPasswordFlags"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="ask-question">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="GObject.Strv" c:type="GStrv"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="reply">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="MountOperationResult" c:type="GMountOperationResult"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="show-processes">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="GLib.Array" c:type="GArray"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <type name="GObject.Strv" c:type="GStrv"/>
+          </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" c:type="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" c:type="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="full">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reply">
+        <callback name="reply" c:type="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" c:type="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" c:type="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">
+              <type name="GLib.Array" c:type="GArray*"/>
+            </parameter>
+            <parameter name="choices" transfer-ownership="full">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="g_reserved1">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved6">
+        <callback name="g_reserved6" c:type="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved7">
+        <callback name="g_reserved7" c:type="_g_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved8">
+        <callback name="g_reserved8" c:type="_g_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved9">
+        <callback name="g_reserved9" c:type="_g_reserved9">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved10">
+        <callback name="g_reserved10" c:type="_g_reserved10">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="MountOperationPrivate" c:type="GMountOperationPrivate">
+    </record>
+    <enumeration name="MountOperationResult"
+                 doc="user specified data is now available
+to be aborted
+implemented)
+#GMountOperationResult is returned as a result when a request for
+information is send by the mounting operation."
+                 glib:type-name="GMountOperationResult"
+                 glib:get-type="g_mount_operation_result_get_type"
+                 c:type="GMountOperationResult">
+      <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"
+              doc="file operations on the mount.
+Flags used when an unmounting a mount."
+              glib:type-name="GMountUnmountFlags"
+              glib:get-type="g_mount_unmount_flags_get_type"
+              c:type="GMountUnmountFlags">
+      <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"/>
+    </constant>
+    <class name="NativeVolumeMonitor"
+           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">
+        <callback name="get_mount_for_mount_path"
+                  c:type="get_mount_for_mount_path">
+          <return-value transfer-ownership="full">
+            <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"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="NetworkAddress"
+           c:type="GNetworkAddress"
+           parent="GObject.Object"
+           glib:type-name="GNetworkAddress"
+           glib:get-type="g_network_address_get_type"
+           glib:type-struct="NetworkAddressClass">
+      <implements name="SocketConnectable"/>
+      <constructor name="new" c:identifier="g_network_address_new">
+        <return-value transfer-ownership="full">
+          <type name="NetworkAddress" c:type="GSocketConnectable*"/>
+        </return-value>
+        <parameters>
+          <parameter name="hostname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="port" transfer-ownership="none">
+            <type name="uint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="parse" c:identifier="g_network_address_parse" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="SocketConnectable" c:type="GSocketConnectable*"/>
+        </return-value>
+        <parameters>
+          <parameter name="host_and_port" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="default_port" transfer-ownership="none">
+            <type name="uint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_hostname"
+              c:identifier="g_network_address_get_hostname">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_port" c:identifier="g_network_address_get_port">
+        <return-value transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <property name="hostname" writable="1" construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="port" writable="1" construct-only="1">
+        <type name="uint" c:type="guint"/>
+      </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">
+    </record>
+    <class name="NetworkService"
+           c:type="GNetworkService"
+           parent="GObject.Object"
+           glib:type-name="GNetworkService"
+           glib:get-type="g_network_service_get_type"
+           glib:type-struct="NetworkServiceClass">
+      <implements name="SocketConnectable"/>
+      <constructor name="new" c:identifier="g_network_service_new">
+        <return-value transfer-ownership="full">
+          <type name="NetworkService" c:type="GSocketConnectable*"/>
+        </return-value>
+        <parameters>
+          <parameter name="service" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="protocol" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="domain" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_service" c:identifier="g_network_service_get_service">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_protocol"
+              c:identifier="g_network_service_get_protocol">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_domain" c:identifier="g_network_service_get_domain">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <property name="domain" writable="1" construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="protocol" writable="1" construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="service" writable="1" construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </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">
+    </record>
+    <class name="OutputStream"
+           c:type="GOutputStream"
+           doc="Base class for writing output.
+All classes derived from GOutputStream should implement synchronous
+writing, splicing, flushing and closing streams, but may implement
+asynchronous versions."
+           parent="GObject.Object"
+           glib:type-name="GOutputStream"
+           glib:get-type="g_output_stream_get_type"
+           glib:type-struct="OutputStreamClass">
+      <virtual-method name="write_fn" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="splice" invoker="splice" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <type name="InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="OutputStreamSpliceFlags"
+                  c:type="GOutputStreamSpliceFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="flush" invoker="flush" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="close_fn" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="write_async" invoker="write_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="6">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="write_finish" invoker="write_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="splice_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <type name="InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="OutputStreamSpliceFlags"
+                  c:type="GOutputStreamSpliceFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="splice_finish" invoker="splice_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="flush_async" invoker="flush_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="flush_finish" invoker="flush_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="close_async" invoker="close_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="close_finish" invoker="close_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="write" c:identifier="g_output_stream_write" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write_all"
+              c:identifier="g_output_stream_write_all"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="bytes_written"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="splice" c:identifier="g_output_stream_splice" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <type name="InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="OutputStreamSpliceFlags"
+                  c:type="GOutputStreamSpliceFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush" c:identifier="g_output_stream_flush" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="close" c:identifier="g_output_stream_close" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="write_async" c:identifier="g_output_stream_write_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="any" c:type="void*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="6">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="write_finish"
+              c:identifier="g_output_stream_write_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="splice_async" c:identifier="g_output_stream_splice_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <type name="InputStream" c:type="GInputStream*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="OutputStreamSpliceFlags"
+                  c:type="GOutputStreamSpliceFlags"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="6">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="splice_finish"
+              c:identifier="g_output_stream_splice_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush_async" c:identifier="g_output_stream_flush_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="flush_finish"
+              c:identifier="g_output_stream_flush_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close_async" c:identifier="g_output_stream_close_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close_finish"
+              c:identifier="g_output_stream_close_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_closed" c:identifier="g_output_stream_is_closed">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_closing" c:identifier="g_output_stream_is_closing">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_pending" c:identifier="g_output_stream_has_pending">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_pending"
+              c:identifier="g_output_stream_set_pending"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="clear_pending"
+              c:identifier="g_output_stream_clear_pending">
+        <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="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" c:type="write_fn" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="ssize_t" 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="any" c:type="void*"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <type name="size_t" c:type="gsize"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="splice">
+        <callback name="splice" c:type="splice" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="ssize_t" 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">
+              <type name="InputStream" c:type="GInputStream*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="OutputStreamSpliceFlags"
+                    c:type="GOutputStreamSpliceFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="flush">
+        <callback name="flush" c:type="flush" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_fn">
+        <callback name="close_fn" c:type="close_fn" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="write_async">
+        <callback name="write_async" c:type="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">
+              <type name="any" c:type="void*"/>
+            </parameter>
+            <parameter name="count" transfer-ownership="none">
+              <type name="size_t" c:type="gsize"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="6">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="write_finish">
+        <callback name="write_finish" c:type="write_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="ssize_t" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="splice_async">
+        <callback name="splice_async" c:type="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">
+              <type name="InputStream" c:type="GInputStream*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="OutputStreamSpliceFlags"
+                    c:type="GOutputStreamSpliceFlags"/>
+            </parameter>
+            <parameter name="io_priority" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="splice_finish">
+        <callback name="splice_finish" c:type="splice_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="ssize_t" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="flush_async">
+        <callback name="flush_async" c:type="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">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="flush_finish">
+        <callback name="flush_finish" c:type="flush_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_async">
+        <callback name="close_async" c:type="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">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close_finish">
+        <callback name="close_finish" c:type="close_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="g_reserved1">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved6">
+        <callback name="g_reserved6" c:type="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved7">
+        <callback name="g_reserved7" c:type="_g_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved8">
+        <callback name="g_reserved8" c:type="_g_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="OutputStreamPrivate" c:type="GOutputStreamPrivate">
+    </record>
+    <bitfield name="OutputStreamSpliceFlags"
+              doc="the splice.
+the splice.
+GOutputStreamSpliceFlags determine how streams should be spliced."
+              glib:type-name="GOutputStreamSpliceFlags"
+              glib:get-type="g_output_stream_splice_flags_get_type"
+              c:type="GOutputStreamSpliceFlags">
+      <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"
+            doc="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."
+            version="2.22">
+      <field name="buffer" writable="1">
+        <type name="any" c:type="gconstpointer"/>
+      </field>
+      <field name="size" writable="1">
+        <type name="size_t" c:type="gsize"/>
+      </field>
+    </record>
+    <enumeration name="PasswordSave"
+                 doc="#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."
+                 glib:type-name="GPasswordSave"
+                 glib:get-type="g_password_save_get_type"
+                 c:type="GPasswordSave">
+      <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>
+    <callback name="ReallocFunc"
+              c:type="GReallocFunc"
+              doc="Changes the size of the memory block pointed to by @data to
+The function should have the same semantics as realloc().">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Resolver"
+           c:type="GResolver"
+           parent="GObject.Object"
+           glib:type-name="GResolver"
+           glib:get-type="g_resolver_get_type"
+           glib:type-struct="ResolverClass">
+      <function name="get_default" c:identifier="g_resolver_get_default">
+        <return-value transfer-ownership="full">
+          <type name="Resolver" c:type="GResolver*"/>
+        </return-value>
+      </function>
+      <function name="free_addresses" c:identifier="g_resolver_free_addresses">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="addresses" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="free_targets" c:identifier="g_resolver_free_targets">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="lookup_by_name"
+                      invoker="lookup_by_name"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="hostname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lookup_by_name_async"
+                      invoker="lookup_by_name_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hostname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lookup_by_name_finish"
+                      invoker="lookup_by_name_finish"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lookup_by_address"
+                      invoker="lookup_by_address"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <type name="InetAddress" c:type="GInetAddress*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lookup_by_address_async"
+                      invoker="lookup_by_address_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <type name="InetAddress" c:type="GInetAddress*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lookup_by_address_finish"
+                      invoker="lookup_by_address_finish"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lookup_service" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="rrname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="lookup_service_finish"
+                      invoker="lookup_service_finish"
+                      throws="1">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_default" c:identifier="g_resolver_set_default">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="lookup_by_name"
+              c:identifier="g_resolver_lookup_by_name"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="hostname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_by_name_async"
+              c:identifier="g_resolver_lookup_by_name_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hostname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_by_name_finish"
+              c:identifier="g_resolver_lookup_by_name_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_by_address"
+              c:identifier="g_resolver_lookup_by_address"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <type name="InetAddress" c:type="GInetAddress*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_by_address_async"
+              c:identifier="g_resolver_lookup_by_address_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <type name="InetAddress" c:type="GInetAddress*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_by_address_finish"
+              c:identifier="g_resolver_lookup_by_address_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_service"
+              c:identifier="g_resolver_lookup_service"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="service" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="protocol" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="domain" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_service_async"
+              c:identifier="g_resolver_lookup_service_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="service" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="protocol" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="domain" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="6">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_service_finish"
+              c:identifier="g_resolver_lookup_service_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <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="ResolverPrivate" c:type="GResolverPrivate*"/>
+      </field>
+      <glib:signal name="reload">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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" c:type="lookup_by_name" throws="1">
+          <return-value transfer-ownership="full">
+            <type name="GLib.List" c:type="GList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="resolver" transfer-ownership="none">
+              <type name="Resolver" c:type="GResolver*"/>
+            </parameter>
+            <parameter name="hostname" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_by_name_async">
+        <callback name="lookup_by_name_async" c:type="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">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_by_name_finish">
+        <callback name="lookup_by_name_finish"
+                  c:type="lookup_by_name_finish"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <type name="GLib.List" c:type="GList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="resolver" transfer-ownership="none">
+              <type name="Resolver" c:type="GResolver*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_by_address">
+        <callback name="lookup_by_address"
+                  c:type="lookup_by_address"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="InetAddress" c:type="GInetAddress*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_by_address_async">
+        <callback name="lookup_by_address_async"
+                  c:type="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">
+              <type name="InetAddress" c:type="GInetAddress*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_by_address_finish">
+        <callback name="lookup_by_address_finish"
+                  c:type="lookup_by_address_finish"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_service">
+        <callback name="lookup_service" c:type="lookup_service" throws="1">
+          <return-value transfer-ownership="full">
+            <type name="GLib.List" c:type="GList*"/>
+          </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"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_service_async">
+        <callback name="lookup_service_async" c:type="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"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="lookup_service_finish">
+        <callback name="lookup_service_finish"
+                  c:type="lookup_service_finish"
+                  throws="1">
+          <return-value transfer-ownership="full">
+            <type name="GLib.List" c:type="GList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="resolver" transfer-ownership="none">
+              <type name="Resolver" c:type="GResolver*"/>
+            </parameter>
+            <parameter name="result" transfer-ownership="none">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="g_reserved1">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved6">
+        <callback name="g_reserved6" c:type="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="ResolverError"
+                 doc="found
+be looked up due to a network error or similar problem
+An error code used with %G_RESOLVER_ERROR in a #GError returned
+from a #GResolver routine."
+                 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">
+      <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">
+    </record>
+    <interface name="Seekable"
+               c:type="GSeekable"
+               doc="Seek object for streaming operations."
+               glib:type-name="GSeekable"
+               glib:get-type="g_seekable_get_type"
+               glib:type-struct="SeekableIface">
+      <virtual-method name="tell" invoker="tell">
+        <return-value transfer-ownership="full">
+          <type name="GLib.offset" c:type="goffset"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_seek" invoker="can_seek">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="seek" invoker="seek" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="GLib.offset" c:type="goffset"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GLib.SeekType" c:type="GSeekType"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="can_truncate" invoker="can_truncate">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="truncate_fn" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="GLib.offset" c:type="goffset"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="tell" c:identifier="g_seekable_tell">
+        <return-value transfer-ownership="full">
+          <type name="GLib.offset" c:type="goffset"/>
+        </return-value>
+      </method>
+      <method name="can_seek" c:identifier="g_seekable_can_seek">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="seek" c:identifier="g_seekable_seek" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="GLib.offset" c:type="goffset"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="GLib.SeekType" c:type="GSeekType"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_truncate" c:identifier="g_seekable_can_truncate">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="truncate" c:identifier="g_seekable_truncate" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="GLib.offset" c:type="goffset"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="SeekableIface"
+            c:type="GSeekableIface"
+            glib:is-gtype-struct-for="Seekable"
+            doc="Provides an interface for implementing seekable functionality on I/O Streams.">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="tell">
+        <callback name="tell" c:type="tell">
+          <return-value transfer-ownership="full">
+            <type name="GLib.offset" 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" c:type="can_seek">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="seek" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="GLib.offset" c:type="goffset"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="GLib.SeekType" c:type="GSeekType"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="can_truncate">
+        <callback name="can_truncate" c:type="can_truncate">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="truncate_fn" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="GLib.offset" c:type="goffset"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="SimpleAsyncResult"
+           c:type="GSimpleAsyncResult"
+           doc="A simple implementation of #GAsyncResult."
+           parent="GObject.Object"
+           glib:type-name="GSimpleAsyncResult"
+           glib:get-type="g_simple_async_result_get_type"
+           glib:type-struct="SimpleAsyncResultClass">
+      <implements name="AsyncResult"/>
+      <constructor name="new" c:identifier="g_simple_async_result_new">
+        <return-value transfer-ownership="full">
+          <type name="SimpleAsyncResult" c:type="GSimpleAsyncResult*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="source_tag" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_error"
+                   c:identifier="g_simple_async_result_new_error">
+        <return-value transfer-ownership="full">
+          <type name="SimpleAsyncResult" c:type="GSimpleAsyncResult*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="2">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </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="format" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="is_valid" c:identifier="g_simple_async_result_is_valid">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="source" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="source_tag" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="set_op_res_gpointer"
+              c:identifier="g_simple_async_result_set_op_res_gpointer">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="op_res" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy_op_res"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_op_res_gpointer"
+              c:identifier="g_simple_async_result_get_op_res_gpointer">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="set_op_res_gssize"
+              c:identifier="g_simple_async_result_set_op_res_gssize">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="op_res" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_op_res_gssize"
+              c:identifier="g_simple_async_result_get_op_res_gssize">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+      </method>
+      <method name="set_op_res_gboolean"
+              c:identifier="g_simple_async_result_set_op_res_gboolean">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="op_res" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_op_res_gboolean"
+              c:identifier="g_simple_async_result_get_op_res_gboolean">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_source_tag"
+              c:identifier="g_simple_async_result_get_source_tag">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="set_handle_cancellation"
+              c:identifier="g_simple_async_result_set_handle_cancellation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="handle_cancellation" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="complete" c:identifier="g_simple_async_result_complete">
+        <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">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="run_in_thread"
+              c:identifier="g_simple_async_result_run_in_thread">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" scope="call">
+            <type name="SimpleAsyncThreadFunc"
+                  c:type="GSimpleAsyncThreadFunc"/>
+          </parameter>
+          <parameter name="io_priority" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_error" c:identifier="g_simple_async_result_set_error">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </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>
+          <parameter name="format" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <record name="SimpleAsyncResultClass"
+            c:type="GSimpleAsyncResultClass"
+            glib:is-gtype-struct-for="SimpleAsyncResult">
+    </record>
+    <callback name="SimpleAsyncThreadFunc"
+              c:type="GSimpleAsyncThreadFunc"
+              doc="Simple thread function that runs an asynchronous operation and
+checks for cancellation.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="res" transfer-ownership="none">
+          <type name="SimpleAsyncResult" c:type="GSimpleAsyncResult*"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Socket"
+           c:type="GSocket"
+           doc="A lowlevel network socket object."
+           version="2.22"
+           parent="GObject.Object"
+           glib:type-name="GSocket"
+           glib:get-type="g_socket_get_type"
+           glib:type-struct="SocketClass">
+      <implements name="Initable"/>
+      <constructor name="new" c:identifier="g_socket_new" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Socket" c:type="GSocket*"/>
+        </return-value>
+        <parameters>
+          <parameter name="family" transfer-ownership="none">
+            <type name="SocketFamily" c:type="GSocketFamily"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="SocketType" c:type="GSocketType"/>
+          </parameter>
+          <parameter name="protocol" transfer-ownership="none">
+            <type name="SocketProtocol" c:type="GSocketProtocol"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_fd"
+                   c:identifier="g_socket_new_from_fd"
+                   throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Socket" c:type="GSocket*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_fd" c:identifier="g_socket_get_fd">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_family" c:identifier="g_socket_get_family">
+        <return-value transfer-ownership="full">
+          <type name="SocketFamily" c:type="GSocketFamily"/>
+        </return-value>
+      </method>
+      <method name="get_socket_type" c:identifier="g_socket_get_socket_type">
+        <return-value transfer-ownership="full">
+          <type name="SocketType" c:type="GSocketType"/>
+        </return-value>
+      </method>
+      <method name="get_protocol" c:identifier="g_socket_get_protocol">
+        <return-value transfer-ownership="full">
+          <type name="SocketProtocol" c:type="GSocketProtocol"/>
+        </return-value>
+      </method>
+      <method name="get_local_address"
+              c:identifier="g_socket_get_local_address"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+      </method>
+      <method name="get_remote_address"
+              c:identifier="g_socket_get_remote_address"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+      </method>
+      <method name="set_blocking" c:identifier="g_socket_set_blocking">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocking" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_blocking" c:identifier="g_socket_get_blocking">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_keepalive" c:identifier="g_socket_set_keepalive">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="keepalive" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_keepalive" c:identifier="g_socket_get_keepalive">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_listen_backlog"
+              c:identifier="g_socket_get_listen_backlog">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_listen_backlog"
+              c:identifier="g_socket_set_listen_backlog">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="backlog" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_connected" c:identifier="g_socket_is_connected">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="bind" c:identifier="g_socket_bind" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <type name="SocketAddress" c:type="GSocketAddress*"/>
+          </parameter>
+          <parameter name="allow_reuse" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect" c:identifier="g_socket_connect" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <type name="SocketAddress" c:type="GSocketAddress*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="check_connect_result"
+              c:identifier="g_socket_check_connect_result"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="condition_check" c:identifier="g_socket_condition_check">
+        <return-value transfer-ownership="full">
+          <type name="GObject.IOCondition" c:type="GIOCondition"/>
+        </return-value>
+        <parameters>
+          <parameter name="condition" transfer-ownership="none">
+            <type name="GObject.IOCondition" c:type="GIOCondition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="condition_wait"
+              c:identifier="g_socket_condition_wait"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="condition" transfer-ownership="none">
+            <type name="GObject.IOCondition" c:type="GIOCondition"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="accept" c:identifier="g_socket_accept" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Socket" c:type="GSocket*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="listen" c:identifier="g_socket_listen" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="receive" c:identifier="g_socket_receive" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="receive_from"
+              c:identifier="g_socket_receive_from"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <type name="SocketAddress" c:type="GSocketAddress**"/>
+          </parameter>
+          <parameter name="buffer" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send" c:identifier="g_socket_send" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_to" c:identifier="g_socket_send_to" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <type name="SocketAddress" c:type="GSocketAddress*"/>
+          </parameter>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="receive_message"
+              c:identifier="g_socket_receive_message"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <type name="SocketAddress" c:type="GSocketAddress**"/>
+          </parameter>
+          <parameter name="vectors" transfer-ownership="none">
+            <type name="InputVector" c:type="GInputVector*"/>
+          </parameter>
+          <parameter name="num_vectors" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="messages" transfer-ownership="none">
+            <type name="SocketControlMessage"
+                  c:type="GSocketControlMessage***"/>
+          </parameter>
+          <parameter name="num_messages"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="flags" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_message"
+              c:identifier="g_socket_send_message"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <type name="SocketAddress" c:type="GSocketAddress*"/>
+          </parameter>
+          <parameter name="vectors" transfer-ownership="none">
+            <type name="OutputVector" c:type="GOutputVector*"/>
+          </parameter>
+          <parameter name="num_vectors" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="messages" transfer-ownership="none">
+            <type name="SocketControlMessage"
+                  c:type="GSocketControlMessage**"/>
+          </parameter>
+          <parameter name="num_messages" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close" c:identifier="g_socket_close" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="shutdown" c:identifier="g_socket_shutdown" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="shutdown_read" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="shutdown_write" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_closed" c:identifier="g_socket_is_closed">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="create_source" c:identifier="g_socket_create_source">
+        <return-value transfer-ownership="full">
+          <type name="GLib.Source" c:type="GSource*"/>
+        </return-value>
+        <parameters>
+          <parameter name="condition" transfer-ownership="none">
+            <type name="GObject.IOCondition" c:type="GIOCondition"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="speaks_ipv4" c:identifier="g_socket_speaks_ipv4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="connection_factory_create_connection"
+              c:identifier="g_socket_connection_factory_create_connection">
+        <return-value transfer-ownership="full">
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+      </method>
+      <property name="blocking" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="family" writable="1" construct-only="1">
+        <type name="SocketFamily" c:type="GSocketFamily"/>
+      </property>
+      <property name="fd" writable="1" construct-only="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="keepalive" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="listen-backlog" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="local-address">
+        <type name="SocketAddress" c:type="GSocketAddress"/>
+      </property>
+      <property name="protocol" writable="1" construct-only="1">
+        <type name="SocketProtocol" c:type="GSocketProtocol"/>
+      </property>
+      <property name="remote-address">
+        <type name="SocketAddress" c:type="GSocketAddress"/>
+      </property>
+      <property name="type" writable="1" construct-only="1">
+        <type name="SocketType" c:type="GSocketType"/>
+      </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:type="GSocketAddress"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GSocketAddress"
+           glib:get-type="g_socket_address_get_type"
+           glib:type-struct="SocketAddressClass">
+      <implements name="SocketConnectable"/>
+      <constructor name="new_from_native"
+                   c:identifier="g_socket_address_new_from_native">
+        <return-value transfer-ownership="full">
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="native" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="get_family" invoker="get_family">
+        <return-value transfer-ownership="full">
+          <type name="SocketFamily" c:type="GSocketFamily"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_native_size" invoker="get_native_size">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="to_native" invoker="to_native" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destlen" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_family" c:identifier="g_socket_address_get_family">
+        <return-value transfer-ownership="full">
+          <type name="SocketFamily" c:type="GSocketFamily"/>
+        </return-value>
+      </method>
+      <method name="to_native"
+              c:identifier="g_socket_address_to_native"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destlen" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_native_size"
+              c:identifier="g_socket_address_get_native_size">
+        <return-value transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </return-value>
+      </method>
+      <property name="family">
+        <type name="SocketFamily" c:type="GSocketFamily"/>
+      </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" c:type="get_family">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_native_size">
+          <return-value transfer-ownership="none">
+            <type name="ssize_t" 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" c:type="to_native" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+            <parameter name="destlen" transfer-ownership="none">
+              <type name="size_t" c:type="gsize"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="SocketAddressEnumerator"
+           c:type="GSocketAddressEnumerator"
+           doc="Enumerator type for objects that contain or generate
+#GSocketAddress&lt;!-- --&gt;es."
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GSocketAddressEnumerator"
+           glib:get-type="g_socket_address_enumerator_get_type"
+           glib:type-struct="SocketAddressEnumeratorClass">
+      <virtual-method name="next" invoker="next" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </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="next_async" invoker="next_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="3">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="next_finish" invoker="next_finish" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="next"
+              c:identifier="g_socket_address_enumerator_next"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next_async"
+              c:identifier="g_socket_address_enumerator_next_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next_finish"
+              c:identifier="g_socket_address_enumerator_next_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <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" c:type="next" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="next_async">
+        <callback name="next_async" c:type="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">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="3">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="next_finish">
+        <callback name="next_finish" c:type="next_finish" throws="1">
+          <return-value transfer-ownership="full">
+            <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">
+              <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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved6">
+        <callback name="g_reserved6" c:type="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved7">
+        <callback name="g_reserved7" c:type="_g_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved8">
+        <callback name="g_reserved8" c:type="_g_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved9">
+        <callback name="g_reserved9" c:type="_g_reserved9">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved10">
+        <callback name="g_reserved10" c:type="_g_reserved10">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="SocketClient"
+           c:type="GSocketClient"
+           doc="A helper class for network servers to listen for and accept connections."
+           version="2.22"
+           parent="GObject.Object"
+           glib:type-name="GSocketClient"
+           glib:get-type="g_socket_client_get_type"
+           glib:type-struct="SocketClientClass">
+      <constructor name="new" c:identifier="g_socket_client_new">
+        <return-value transfer-ownership="full">
+          <type name="SocketClient" c:type="GSocketClient*"/>
+        </return-value>
+      </constructor>
+      <method name="get_family" c:identifier="g_socket_client_get_family">
+        <return-value transfer-ownership="full">
+          <type name="SocketFamily" c:type="GSocketFamily"/>
+        </return-value>
+      </method>
+      <method name="set_family" c:identifier="g_socket_client_set_family">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="family" transfer-ownership="none">
+            <type name="SocketFamily" c:type="GSocketFamily"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_socket_type"
+              c:identifier="g_socket_client_get_socket_type">
+        <return-value transfer-ownership="full">
+          <type name="SocketType" c:type="GSocketType"/>
+        </return-value>
+      </method>
+      <method name="set_socket_type"
+              c:identifier="g_socket_client_set_socket_type">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="SocketType" c:type="GSocketType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_protocol" c:identifier="g_socket_client_get_protocol">
+        <return-value transfer-ownership="full">
+          <type name="SocketProtocol" c:type="GSocketProtocol"/>
+        </return-value>
+      </method>
+      <method name="set_protocol" c:identifier="g_socket_client_set_protocol">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="protocol" transfer-ownership="none">
+            <type name="SocketProtocol" c:type="GSocketProtocol"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_local_address"
+              c:identifier="g_socket_client_get_local_address">
+        <return-value transfer-ownership="full">
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+      </method>
+      <method name="set_local_address"
+              c:identifier="g_socket_client_set_local_address">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <type name="SocketAddress" c:type="GSocketAddress*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect" c:identifier="g_socket_client_connect" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="connectable" transfer-ownership="none">
+            <type name="SocketConnectable" c:type="GSocketConnectable*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_to_host"
+              c:identifier="g_socket_client_connect_to_host"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="host_and_port" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="default_port" transfer-ownership="none">
+            <type name="uint16" c:type="guint16"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_to_service"
+              c:identifier="g_socket_client_connect_to_service"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="domain" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="service" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_async"
+              c:identifier="g_socket_client_connect_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="connectable" transfer-ownership="none">
+            <type name="SocketConnectable" c:type="GSocketConnectable*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_finish"
+              c:identifier="g_socket_client_connect_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_to_host_async"
+              c:identifier="g_socket_client_connect_to_host_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="host_and_port" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="default_port" transfer-ownership="none">
+            <type name="uint16" c:type="guint16"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_to_host_finish"
+              c:identifier="g_socket_client_connect_to_host_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_to_service_async"
+              c:identifier="g_socket_client_connect_to_service_async">
+        <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>
+          <parameter name="service" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_to_service_finish"
+              c:identifier="g_socket_client_connect_to_service_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="family" writable="1" construct="1">
+        <type name="SocketFamily" c:type="GSocketFamily"/>
+      </property>
+      <property name="local-address" writable="1" construct="1">
+        <type name="SocketAddress" c:type="GSocketAddress"/>
+      </property>
+      <property name="protocol" writable="1" construct="1">
+        <type name="SocketProtocol" c:type="GSocketProtocol"/>
+      </property>
+      <property name="type" writable="1" construct="1">
+        <type name="SocketType" c:type="GSocketType"/>
+      </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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="SocketClientPrivate" c:type="GSocketClientPrivate">
+    </record>
+    <interface name="SocketConnectable"
+               c:type="GSocketConnectable"
+               doc="Interface for objects that contain or generate #GSocketAddress&lt;!-- --&gt;es."
+               glib:type-name="GSocketConnectable"
+               glib:get-type="g_socket_connectable_get_type"
+               glib:type-struct="SocketConnectableIface">
+      <virtual-method name="enumerate" invoker="enumerate">
+        <return-value transfer-ownership="full">
+          <type name="SocketAddressEnumerator"
+                c:type="GSocketAddressEnumerator*"/>
+        </return-value>
+      </virtual-method>
+      <method name="enumerate" c:identifier="g_socket_connectable_enumerate">
+        <return-value transfer-ownership="full">
+          <type name="SocketAddressEnumerator"
+                c:type="GSocketAddressEnumerator*"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="SocketConnectableIface"
+            c:type="GSocketConnectableIface"
+            glib:is-gtype-struct-for="SocketConnectable"
+            doc="Provides an interface for returning a #GSocketAddressEnumerator">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="enumerate">
+        <callback name="enumerate" c:type="enumerate">
+          <return-value transfer-ownership="full">
+            <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:type="GSocketConnection"
+           doc="A socket connection GIOStream object for connection-oriented sockets."
+           version="2.22"
+           parent="IOStream"
+           glib:type-name="GSocketConnection"
+           glib:get-type="g_socket_connection_get_type"
+           glib:type-struct="SocketConnectionClass">
+      <function name="factory_register_type"
+                c:identifier="g_socket_connection_factory_register_type">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="g_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="family" transfer-ownership="none">
+            <type name="SocketFamily" c:type="GSocketFamily"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="SocketType" c:type="GSocketType"/>
+          </parameter>
+          <parameter name="protocol" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="factory_lookup_type"
+                c:identifier="g_socket_connection_factory_lookup_type">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="family" transfer-ownership="none">
+            <type name="SocketFamily" c:type="GSocketFamily"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="SocketType" c:type="GSocketType"/>
+          </parameter>
+          <parameter name="protocol_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_socket" c:identifier="g_socket_connection_get_socket">
+        <return-value transfer-ownership="full">
+          <type name="Socket" c:type="GSocket*"/>
+        </return-value>
+      </method>
+      <method name="get_local_address"
+              c:identifier="g_socket_connection_get_local_address"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+      </method>
+      <method name="get_remote_address"
+              c:identifier="g_socket_connection_get_remote_address"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="SocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+      </method>
+      <property name="socket" writable="1" construct-only="1">
+        <type name="Socket" c:type="GSocket"/>
+      </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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved6">
+        <callback name="g_reserved6" c:type="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="SocketConnectionPrivate" c:type="GSocketConnectionPrivate">
+    </record>
+    <class name="SocketControlMessage"
+           c:type="GSocketControlMessage"
+           doc="Base class for socket-type specific control messages that can be sent and
+received over #GSocket."
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="GSocketControlMessage"
+           glib:get-type="g_socket_control_message_get_type"
+           glib:type-struct="SocketControlMessageClass">
+      <function name="deserialize"
+                c:identifier="g_socket_control_message_deserialize">
+        <return-value transfer-ownership="full">
+          <type name="SocketControlMessage" c:type="GSocketControlMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="level" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="get_size" invoker="get_size">
+        <return-value transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_level" invoker="get_level">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_type">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="serialize" invoker="serialize">
+        <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="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_size" c:identifier="g_socket_control_message_get_size">
+        <return-value transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="get_level"
+              c:identifier="g_socket_control_message_get_level">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_msg_type"
+              c:identifier="g_socket_control_message_get_msg_type">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="serialize"
+              c:identifier="g_socket_control_message_serialize">
+        <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="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" c:type="get_size">
+          <return-value transfer-ownership="none">
+            <type name="size_t" 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" c:type="get_level">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="get_type">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="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">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="deserialize">
+        <callback name="deserialize" c:type="deserialize">
+          <return-value transfer-ownership="full">
+            <type name="SocketControlMessage" c:type="GSocketControlMessage*"/>
+          </return-value>
+          <parameters>
+            <parameter name="level" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="size_t" c:type="gsize"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="g_reserved1">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="SocketControlMessagePrivate"
+            c:type="GSocketControlMessagePrivate">
+    </record>
+    <enumeration name="SocketFamily"
+                 doc="The protocol family of a #GSocketAddress. (These values are
+identical to the system defines %AF_INET, %AF_INET6 and %AF_UNIX,
+if available.)"
+                 version="2.22"
+                 glib:type-name="GSocketFamily"
+                 glib:get-type="g_socket_family_get_type"
+                 c:type="GSocketFamily">
+      <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: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">
+        <return-value transfer-ownership="full">
+          <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="set_backlog" c:identifier="g_socket_listener_set_backlog">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="listen_backlog" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_socket"
+              c:identifier="g_socket_listener_add_socket"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="socket" transfer-ownership="none">
+            <type name="Socket" c:type="GSocket*"/>
+          </parameter>
+          <parameter name="source_object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_address"
+              c:identifier="g_socket_listener_add_address"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="address" transfer-ownership="none">
+            <type name="SocketAddress" c:type="GSocketAddress*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="SocketType" c:type="GSocketType"/>
+          </parameter>
+          <parameter name="protocol" transfer-ownership="none">
+            <type name="SocketProtocol" c:type="GSocketProtocol"/>
+          </parameter>
+          <parameter name="source_object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="effective_address" transfer-ownership="none">
+            <type name="SocketAddress" c:type="GSocketAddress**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_inet_port"
+              c:identifier="g_socket_listener_add_inet_port"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="port" transfer-ownership="none">
+            <type name="uint16" c:type="guint16"/>
+          </parameter>
+          <parameter name="source_object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_any_inet_port"
+              c:identifier="g_socket_listener_add_any_inet_port"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="accept_socket"
+              c:identifier="g_socket_listener_accept_socket"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Socket" c:type="GSocket*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject**"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="accept_socket_async"
+              c:identifier="g_socket_listener_accept_socket_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="accept_socket_finish"
+              c:identifier="g_socket_listener_accept_socket_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="Socket" c:type="GSocket*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="source_object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="accept" c:identifier="g_socket_listener_accept" throws="1">
+        <return-value transfer-ownership="full">
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject**"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="accept_async"
+              c:identifier="g_socket_listener_accept_async">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="accept_finish"
+              c:identifier="g_socket_listener_accept_finish"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="SocketConnection" c:type="GSocketConnection*"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+          <parameter name="source_object" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="close" c:identifier="g_socket_listener_close">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="listen-backlog" writable="1" construct="1">
+        <type name="int" c:type="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" c:type="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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved6">
+        <callback name="g_reserved6" c:type="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="SocketListenerPrivate" c:type="GSocketListenerPrivate">
+    </record>
+    <enumeration name="SocketMsgFlags"
+                 doc="the queue.
+only send to hosts on directly connected networks.
+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."
+                 version="2.22"
+                 glib:type-name="GSocketMsgFlags"
+                 glib:get-type="g_socket_msg_flags_get_type"
+                 c:type="GSocketMsgFlags">
+      <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">
+    </record>
+    <enumeration name="SocketProtocol"
+                 doc="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."
+                 version="2.22"
+                 glib:type-name="GSocketProtocol"
+                 glib:get-type="g_socket_protocol_get_type"
+                 c:type="GSocketProtocol">
+      <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:type="GSocketService"
+           doc="A helper class for handling accepting incomming connections in the
+glib mainloop."
+           version="2.22"
+           parent="SocketListener"
+           glib:type-name="GSocketService"
+           glib:get-type="g_socket_service_get_type"
+           glib:type-struct="SocketServiceClass">
+      <constructor name="new" c:identifier="g_socket_service_new">
+        <return-value transfer-ownership="full">
+          <type name="SocketService" c:type="GSocketService*"/>
+        </return-value>
+      </constructor>
+      <method name="start" c:identifier="g_socket_service_start">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop" c:identifier="g_socket_service_stop">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="is_active" c:identifier="g_socket_service_is_active">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </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">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="SocketConnection" c:type="GSocketConnection"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject"/>
+          </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" c:type="incoming">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved6">
+        <callback name="g_reserved6" c:type="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="SocketServicePrivate" c:type="GSocketServicePrivate">
+    </record>
+    <callback name="SocketSourceFunc"
+              c:type="GSocketSourceFunc"
+              doc="This is the function type of the callback used for the #GSource
+returned by g_socket_create_source()."
+              version="2.22">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="socket" transfer-ownership="none">
+          <type name="Socket" c:type="GSocket*"/>
+        </parameter>
+        <parameter name="condition" transfer-ownership="none">
+          <type name="GObject.IOCondition" c:type="GIOCondition"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="SocketType"
+                 doc="(e.g. UDP)
+of fixed maximum length (e.g. SCTP).
+Flags used when creating a #GSocket. Some protocols may not implement
+all the socket types."
+                 version="2.22"
+                 glib:type-name="GSocketType"
+                 glib:get-type="g_socket_type_get_type"
+                 c:type="GSocketType">
+      <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">
+      <constructor name="new" c:identifier="g_srv_target_new">
+        <return-value transfer-ownership="full">
+          <type name="SrvTarget" c:type="GSrvTarget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="hostname" 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="priority" transfer-ownership="none">
+            <type name="uint16" c:type="guint16"/>
+          </parameter>
+          <parameter name="weight" transfer-ownership="none">
+            <type name="uint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy" c:identifier="g_srv_target_copy">
+        <return-value transfer-ownership="full">
+          <type name="SrvTarget" c:type="GSrvTarget*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="g_srv_target_free">
+        <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">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_port" c:identifier="g_srv_target_get_port">
+        <return-value transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="get_priority" c:identifier="g_srv_target_get_priority">
+        <return-value transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="get_weight" c:identifier="g_srv_target_get_weight">
+        <return-value transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="TcpConnection"
+           c:type="GTcpConnection"
+           doc="A #GSocketConnection for UNIX domain socket connections."
+           version="2.22"
+           parent="SocketConnection"
+           glib:type-name="GTcpConnection"
+           glib:get-type="g_tcp_connection_get_type"
+           glib:type-struct="TcpConnectionClass">
+      <method name="set_graceful_disconnect"
+              c:identifier="g_tcp_connection_set_graceful_disconnect">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="graceful_disconnect" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_graceful_disconnect"
+              c:identifier="g_tcp_connection_get_graceful_disconnect">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="graceful-disconnect" writable="1">
+        <type name="boolean" c:type="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">
+    </record>
+    <class name="ThemedIcon"
+           c:type="GThemedIcon"
+           doc="An implementation of #GIcon for themed icons."
+           parent="GObject.Object"
+           glib:type-name="GThemedIcon"
+           glib:get-type="g_themed_icon_get_type"
+           glib:type-struct="ThemedIconClass">
+      <implements name="Icon"/>
+      <constructor name="new" c:identifier="g_themed_icon_new">
+        <return-value transfer-ownership="full">
+          <type name="ThemedIcon" c:type="GIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iconname" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_default_fallbacks"
+                   c:identifier="g_themed_icon_new_with_default_fallbacks">
+        <return-value transfer-ownership="full">
+          <type name="ThemedIcon" c:type="GIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iconname" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_names"
+                   c:identifier="g_themed_icon_new_from_names">
+        <return-value transfer-ownership="full">
+          <type name="ThemedIcon" c:type="GIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iconnames" transfer-ownership="none">
+            <array c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="prepend_name" c:identifier="g_themed_icon_prepend_name">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iconname" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_name" c:identifier="g_themed_icon_append_name">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iconname" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_names" c:identifier="g_themed_icon_get_names">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <property name="name" readable="0" writable="1" construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="names" writable="1" construct-only="1">
+        <type name="GObject.Strv" c:type="GStrv"/>
+      </property>
+      <property name="use-default-fallbacks" writable="1" construct-only="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+    </class>
+    <record name="ThemedIconClass"
+            c:type="GThemedIconClass"
+            glib:is-gtype-struct-for="ThemedIcon">
+    </record>
+    <class name="ThreadedSocketService"
+           c:type="GThreadedSocketService"
+           doc="A helper class for handling accepting incomming connections in the
+glib mainloop and handling them in a thread."
+           version="2.22"
+           parent="SocketService"
+           glib:type-name="GThreadedSocketService"
+           glib:get-type="g_threaded_socket_service_get_type"
+           glib:type-struct="ThreadedSocketServiceClass">
+      <constructor name="new" c:identifier="g_threaded_socket_service_new">
+        <return-value transfer-ownership="full">
+          <type name="ThreadedSocketService" c:type="GSocketService*"/>
+        </return-value>
+        <parameters>
+          <parameter name="max_threads" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <property name="max-threads" writable="1" construct-only="1">
+        <type name="int" c:type="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">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="SocketConnection" c:type="GSocketConnection"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject"/>
+          </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" c:type="run">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ThreadedSocketServicePrivate"
+            c:type="GThreadedSocketServicePrivate">
+    </record>
+    <class name="UnixConnection"
+           c:type="GUnixConnection"
+           parent="SocketConnection"
+           glib:type-name="GUnixConnection"
+           glib:get-type="g_unix_connection_get_type"
+           glib:type-struct="UnixConnectionClass">
+      <method name="send_fd"
+              c:identifier="g_unix_connection_send_fd"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="receive_fd"
+              c:identifier="g_unix_connection_receive_fd"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+    </record>
+    <class name="UnixFDList"
+           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">
+        <return-value transfer-ownership="full">
+          <type name="UnixFDList" c:type="GUnixFDList*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_array"
+                   c:identifier="g_unix_fd_list_new_from_array">
+        <return-value transfer-ownership="full">
+          <type name="UnixFDList" c:type="GUnixFDList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fds" direction="out" transfer-ownership="none">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="n_fds" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="append" c:identifier="g_unix_fd_list_append" throws="1">
+        <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>
+        </parameters>
+      </method>
+      <method name="get_length" c:identifier="g_unix_fd_list_get_length">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get" c:identifier="g_unix_fd_list_get" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="peek_fds" c:identifier="g_unix_fd_list_peek_fds">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint*"/>
+        </return-value>
+        <parameters>
+          <parameter name="length" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="steal_fds" c:identifier="g_unix_fd_list_steal_fds">
+        <return-value transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </return-value>
+        <parameters>
+          <parameter name="length" direction="out" transfer-ownership="full">
+            <type name="int" 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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="UnixFDListPrivate" c:type="GUnixFDListPrivate">
+    </record>
+    <class name="UnixFDMessage"
+           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_with_fd_list"
+                   c:identifier="g_unix_fd_message_new_with_fd_list">
+        <return-value transfer-ownership="full">
+          <type name="UnixFDMessage" c:type="GSocketControlMessage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd_list" transfer-ownership="none">
+            <type name="UnixFDList" c:type="GUnixFDList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new" c:identifier="g_unix_fd_message_new">
+        <return-value transfer-ownership="full">
+          <type name="UnixFDMessage" c:type="GSocketControlMessage*"/>
+        </return-value>
+      </constructor>
+      <method name="get_fd_list" c:identifier="g_unix_fd_message_get_fd_list">
+        <return-value transfer-ownership="full">
+          <type name="UnixFDList" c:type="GUnixFDList*"/>
+        </return-value>
+      </method>
+      <method name="steal_fds" c:identifier="g_unix_fd_message_steal_fds">
+        <return-value transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </return-value>
+        <parameters>
+          <parameter name="length" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_fd"
+              c:identifier="g_unix_fd_message_append_fd"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="fd-list" writable="1" construct-only="1">
+        <type name="UnixFDList" c:type="GUnixFDList"/>
+      </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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="UnixFDMessagePrivate" c:type="GUnixFDMessagePrivate">
+    </record>
+    <class name="UnixInputStream"
+           c:type="GUnixInputStream"
+           doc="Implements #GInputStream for reading from selectable unix file descriptors"
+           parent="InputStream"
+           glib:type-name="GUnixInputStream"
+           glib:get-type="g_unix_input_stream_get_type"
+           glib:type-struct="UnixInputStreamClass">
+      <constructor name="new" c:identifier="g_unix_input_stream_new">
+        <return-value transfer-ownership="full">
+          <type name="UnixInputStream" c:type="GInputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="close_fd" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_close_fd"
+              c:identifier="g_unix_input_stream_set_close_fd">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="close_fd" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_close_fd"
+              c:identifier="g_unix_input_stream_get_close_fd">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_fd" c:identifier="g_unix_input_stream_get_fd">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <property name="close-fd" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="fd" writable="1" construct-only="1">
+        <type name="int" c:type="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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="UnixInputStreamPrivate" c:type="GUnixInputStreamPrivate">
+    </record>
+    <record name="UnixMountEntry"
+            c:type="GUnixMountEntry"
+            doc="Defines a Unix mount entry (e.g. &lt;filename&gt;/media/cdrom&lt;/filename&gt;).
+This corresponds roughly to a mtab entry.">
+    </record>
+    <class name="UnixMountMonitor"
+           c:type="GUnixMountMonitor"
+           doc="Watches #GUnixMount&lt;!-- --&gt;s for changes."
+           parent="GObject.Object"
+           glib:type-name="GUnixMountMonitor"
+           glib:get-type="g_unix_mount_monitor_get_type"
+           glib:type-struct="UnixMountMonitorClass">
+      <constructor name="new" c:identifier="g_unix_mount_monitor_new">
+        <return-value transfer-ownership="full">
+          <type name="UnixMountMonitor" c:type="GUnixMountMonitor*"/>
+        </return-value>
+      </constructor>
+      <method name="set_rate_limit"
+              c:identifier="g_unix_mount_monitor_set_rate_limit">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="limit_msec" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="mountpoints-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="mounts-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="UnixMountMonitorClass"
+            c:type="GUnixMountMonitorClass"
+            glib:is-gtype-struct-for="UnixMountMonitor">
+    </record>
+    <record name="UnixMountPoint"
+            c:type="GUnixMountPoint"
+            doc="Defines a Unix mount point (e.g. &lt;filename&gt;/dev&lt;/filename&gt;).
+This corresponds roughly to a fstab entry.">
+      <method name="free" c:identifier="g_unix_mount_point_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="compare" c:identifier="g_unix_mount_point_compare">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="mount2" transfer-ownership="none">
+            <type name="UnixMountPoint" c:type="GUnixMountPoint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mount_path"
+              c:identifier="g_unix_mount_point_get_mount_path">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_device_path"
+              c:identifier="g_unix_mount_point_get_device_path">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_fs_type" c:identifier="g_unix_mount_point_get_fs_type">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="is_readonly" c:identifier="g_unix_mount_point_is_readonly">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_user_mountable"
+              c:identifier="g_unix_mount_point_is_user_mountable">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_loopback" c:identifier="g_unix_mount_point_is_loopback">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="guess_can_eject"
+              c:identifier="g_unix_mount_point_guess_can_eject">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="guess_name" c:identifier="g_unix_mount_point_guess_name">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="guess_icon" c:identifier="g_unix_mount_point_guess_icon">
+        <return-value transfer-ownership="full">
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="UnixOutputStream"
+           c:type="GUnixOutputStream"
+           doc="Implements #GOutputStream for outputting to selectable unix file descriptors"
+           parent="OutputStream"
+           glib:type-name="GUnixOutputStream"
+           glib:get-type="g_unix_output_stream_get_type"
+           glib:type-struct="UnixOutputStreamClass">
+      <constructor name="new" c:identifier="g_unix_output_stream_new">
+        <return-value transfer-ownership="full">
+          <type name="UnixOutputStream" c:type="GOutputStream*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="close_fd" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_close_fd"
+              c:identifier="g_unix_output_stream_set_close_fd">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="close_fd" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_close_fd"
+              c:identifier="g_unix_output_stream_get_close_fd">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_fd" c:identifier="g_unix_output_stream_get_fd">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <property name="close-fd" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="fd" writable="1" construct-only="1">
+        <type name="int" c:type="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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="UnixOutputStreamPrivate" c:type="GUnixOutputStreamPrivate">
+    </record>
+    <class name="UnixSocketAddress"
+           c:type="GUnixSocketAddress"
+           parent="SocketAddress"
+           glib:type-name="GUnixSocketAddress"
+           glib:get-type="g_unix_socket_address_get_type"
+           glib:type-struct="UnixSocketAddressClass">
+      <implements name="SocketConnectable"/>
+      <constructor name="new" c:identifier="g_unix_socket_address_new">
+        <return-value transfer-ownership="full">
+          <type name="UnixSocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_abstract"
+                   c:identifier="g_unix_socket_address_new_abstract">
+        <return-value transfer-ownership="full">
+          <type name="UnixSocketAddress" c:type="GSocketAddress*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="path_len" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="abstract_names_supported"
+                c:identifier="g_unix_socket_address_abstract_names_supported">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </function>
+      <method name="get_path" c:identifier="g_unix_socket_address_get_path">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_path_len"
+              c:identifier="g_unix_socket_address_get_path_len">
+        <return-value transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="get_is_abstract"
+              c:identifier="g_unix_socket_address_get_is_abstract">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="abstract" writable="1" construct-only="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="path" writable="1" construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="path-as-array" writable="1" construct-only="1">
+        <type name="GLib.ByteArray" c:type="GByteArray"/>
+      </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">
+    </record>
+    <constant name="VFS_EXTENSION_POINT_NAME" value="gio-vfs">
+      <type name="utf8"/>
+    </constant>
+    <constant name="VOLUME_IDENTIFIER_KIND_HAL_UDI" value="hal-udi">
+      <type name="utf8"/>
+    </constant>
+    <constant name="VOLUME_IDENTIFIER_KIND_LABEL" value="label">
+      <type name="utf8"/>
+    </constant>
+    <constant name="VOLUME_IDENTIFIER_KIND_NFS_MOUNT" value="nfs-mount">
+      <type name="utf8"/>
+    </constant>
+    <constant name="VOLUME_IDENTIFIER_KIND_UNIX_DEVICE" value="unix-device">
+      <type name="utf8"/>
+    </constant>
+    <constant name="VOLUME_IDENTIFIER_KIND_UUID" value="uuid">
+      <type name="utf8"/>
+    </constant>
+    <constant name="VOLUME_MONITOR_EXTENSION_POINT_NAME"
+              value="gio-volume-monitor">
+      <type name="utf8"/>
+    </constant>
+    <class name="Vfs"
+           c:type="GVfs"
+           doc="Virtual File System object."
+           parent="GObject.Object"
+           glib:type-name="GVfs"
+           glib:get-type="g_vfs_get_type"
+           glib:type-struct="VfsClass">
+      <function name="get_default" c:identifier="g_vfs_get_default">
+        <return-value transfer-ownership="full">
+          <type name="Vfs" c:type="GVfs*"/>
+        </return-value>
+      </function>
+      <function name="get_local" c:identifier="g_vfs_get_local">
+        <return-value transfer-ownership="full">
+          <type name="Vfs" c:type="GVfs*"/>
+        </return-value>
+      </function>
+      <virtual-method name="is_active" invoker="is_active">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_file_for_path" invoker="get_file_for_path">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_file_for_uri" invoker="get_file_for_uri">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_supported_uri_schemes"
+                      invoker="get_supported_uri_schemes">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="parse_name" invoker="parse_name">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parse_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </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="uint64" 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"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="extra_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer*"/>
+          </parameter>
+          <parameter name="free_extra_data" transfer-ownership="none">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <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="local_file_set_attributes" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </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_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>
+      <method name="is_active" c:identifier="g_vfs_is_active">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_file_for_path" c:identifier="g_vfs_get_file_for_path">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_file_for_uri" c:identifier="g_vfs_get_file_for_uri">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_supported_uri_schemes"
+              c:identifier="g_vfs_get_supported_uri_schemes">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="parse_name" c:identifier="g_vfs_parse_name">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parse_name" transfer-ownership="none">
+            <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" c:type="is_active">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="get_file_for_path">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_file_for_uri">
+        <callback name="get_file_for_uri" c:type="get_file_for_uri">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_supported_uri_schemes">
+        <callback name="get_supported_uri_schemes"
+                  c:type="get_supported_uri_schemes">
+          <return-value transfer-ownership="full">
+            <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" c:type="parse_name">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="local_file_add_info">
+        <callback name="local_file_add_info" c:type="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="uint64" 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"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="extra_data" transfer-ownership="none">
+              <type name="any" c:type="gpointer*"/>
+            </parameter>
+            <parameter name="free_extra_data" transfer-ownership="none">
+              <type name="GLib.DestroyNotify" c:type="GDestroyNotify*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="add_writable_namespaces">
+        <callback name="add_writable_namespaces"
+                  c:type="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"
+                  c:type="local_file_set_attributes"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="local_file_removed">
+        <callback name="local_file_removed" c:type="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" c:type="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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved6">
+        <callback name="g_reserved6" c:type="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved7">
+        <callback name="g_reserved7" c:type="_g_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <interface name="Volume"
+               c:type="GVolume"
+               doc="Opaque mountable volume object."
+               glib:type-name="GVolume"
+               glib:get-type="g_volume_get_type"
+               glib:type-struct="VolumeIface">
+      <virtual-method name="get_name" invoker="get_name">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_icon" invoker="get_icon">
+        <return-value transfer-ownership="full">
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_uuid" invoker="get_uuid">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_drive" invoker="get_drive">
+        <return-value transfer-ownership="full">
+          <type name="Drive" c:type="GDrive*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_mount" invoker="get_mount">
+        <return-value transfer-ownership="full">
+          <type name="Mount" c:type="GMount*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_mount" invoker="can_mount">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="can_eject" invoker="can_eject">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="mount_fn">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountMountFlags" c:type="GMountMountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="mount_finish" invoker="mount_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject" invoker="eject">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="4">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_finish" invoker="eject_finish" throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_identifier" invoker="get_identifier">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="kind" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="enumerate_identifiers"
+                      invoker="enumerate_identifiers">
+        <return-value transfer-ownership="full">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="should_automount" invoker="should_automount">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_activation_root" invoker="get_activation_root">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="eject_with_operation"
+                      invoker="eject_with_operation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none" closure="5">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="eject_with_operation_finish"
+                      invoker="eject_with_operation_finish"
+                      throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_name" c:identifier="g_volume_get_name">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_icon" c:identifier="g_volume_get_icon">
+        <return-value transfer-ownership="full">
+          <type name="Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="get_uuid" c:identifier="g_volume_get_uuid">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_drive" c:identifier="g_volume_get_drive">
+        <return-value transfer-ownership="full">
+          <type name="Drive" c:type="GDrive*"/>
+        </return-value>
+      </method>
+      <method name="get_mount" c:identifier="g_volume_get_mount">
+        <return-value transfer-ownership="full">
+          <type name="Mount" c:type="GMount*"/>
+        </return-value>
+      </method>
+      <method name="can_mount" c:identifier="g_volume_can_mount">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="can_eject" c:identifier="g_volume_can_eject">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="should_automount" c:identifier="g_volume_should_automount">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="mount" c:identifier="g_volume_mount">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountMountFlags" c:type="GMountMountFlags"/>
+          </parameter>
+          <parameter name="mount_operation"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="mount_finish"
+              c:identifier="g_volume_mount_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject" c:identifier="g_volume_eject">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <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">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_finish"
+              c:identifier="g_volume_eject_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_identifier" c:identifier="g_volume_get_identifier">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+        <parameters>
+          <parameter name="kind" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enumerate_identifiers"
+              c:identifier="g_volume_enumerate_identifiers">
+        <return-value transfer-ownership="full">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_activation_root"
+              c:identifier="g_volume_get_activation_root">
+        <return-value transfer-ownership="full">
+          <type name="File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <method name="eject_with_operation"
+              c:identifier="g_volume_eject_with_operation">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+          </parameter>
+          <parameter name="mount_operation" transfer-ownership="none">
+            <type name="MountOperation" c:type="GMountOperation*"/>
+          </parameter>
+          <parameter name="cancellable"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Cancellable" c:type="GCancellable*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="async"
+                     closure="5">
+            <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="eject_with_operation_finish"
+              c:identifier="g_volume_eject_with_operation_finish"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="AsyncResult" c:type="GAsyncResult*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="removed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </interface>
+    <record name="VolumeIface"
+            c:type="GVolumeIface"
+            glib:is-gtype-struct-for="Volume"
+            doc="#GVolume implementations must emit the #GMountOperation::aborted
+signal before completing a mount operation that is aborted while
+awaiting input from the user through a #GMountOperation instance.
+the #GVolume doesn&apos;t have one.
+of &lt;link linkend=&quot;volume-identifier&quot;&gt;identifiers&lt;/link&gt; which the #GVolume has.
+it is not known.
+Interface for implementing operations for mountable volumes.">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="changed">
+        <callback name="changed" c:type="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" c:type="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" c:type="get_name">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_icon">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_uuid">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_drive">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_mount">
+          <return-value transfer-ownership="full">
+            <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" c:type="can_mount">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="can_eject">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="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">
+              <type name="MountMountFlags" c:type="GMountMountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="mount_finish">
+        <callback name="mount_finish" c:type="mount_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject">
+        <callback name="eject" c:type="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">
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="4">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_finish">
+        <callback name="eject_finish" c:type="eject_finish" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_identifier">
+        <callback name="get_identifier" c:type="get_identifier">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="enumerate_identifiers">
+        <callback name="enumerate_identifiers" c:type="enumerate_identifiers">
+          <return-value transfer-ownership="full">
+            <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" c:type="should_automount">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="get_activation_root">
+          <return-value transfer-ownership="full">
+            <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" c:type="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">
+              <type name="MountUnmountFlags" c:type="GMountUnmountFlags"/>
+            </parameter>
+            <parameter name="mount_operation" transfer-ownership="none">
+              <type name="MountOperation" c:type="GMountOperation*"/>
+            </parameter>
+            <parameter name="cancellable"
+                       transfer-ownership="none"
+                       allow-none="1">
+              <type name="Cancellable" c:type="GCancellable*"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+            </parameter>
+            <parameter name="user_data" transfer-ownership="none" closure="5">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="eject_with_operation_finish">
+        <callback name="eject_with_operation_finish"
+                  c:type="eject_with_operation_finish"
+                  throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="AsyncResult" c:type="GAsyncResult*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="VolumeMonitor"
+           c:type="GVolumeMonitor"
+           doc="A Volume Monitor that watches for volume events."
+           parent="GObject.Object"
+           glib:type-name="GVolumeMonitor"
+           glib:get-type="g_volume_monitor_get_type"
+           glib:type-struct="VolumeMonitorClass">
+      <function name="get" c:identifier="g_volume_monitor_get">
+        <return-value transfer-ownership="full">
+          <type name="VolumeMonitor" c:type="GVolumeMonitor*"/>
+        </return-value>
+      </function>
+      <function name="adopt_orphan_mount"
+                c:identifier="g_volume_monitor_adopt_orphan_mount">
+        <return-value transfer-ownership="full">
+          <type name="Volume" c:type="GVolume*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mount" transfer-ownership="none">
+            <type name="Mount" c:type="GMount*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="get_connected_drives"
+                      invoker="get_connected_drives">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_volumes" invoker="get_volumes">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_mounts" invoker="get_mounts">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_volume_for_uuid" invoker="get_volume_for_uuid">
+        <return-value transfer-ownership="full">
+          <type name="Volume" c:type="GVolume*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uuid" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_mount_for_uuid" invoker="get_mount_for_uuid">
+        <return-value transfer-ownership="full">
+          <type name="Mount" c:type="GMount*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uuid" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_connected_drives"
+              c:identifier="g_volume_monitor_get_connected_drives">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*">
+            <type name="Drive"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_volumes" c:identifier="g_volume_monitor_get_volumes">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*">
+            <type name="Volume"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_mounts" c:identifier="g_volume_monitor_get_mounts">
+        <return-value transfer-ownership="full">
+          <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">
+        <return-value transfer-ownership="full">
+          <type name="Volume" c:type="GVolume*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uuid" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mount_for_uuid"
+              c:identifier="g_volume_monitor_get_mount_for_uuid">
+        <return-value transfer-ownership="full">
+          <type name="Mount" c:type="GMount*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uuid" transfer-ownership="none">
+            <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="any" c:type="gpointer"/>
+      </field>
+      <glib:signal name="drive-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Drive" c:type="GDrive"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drive-connected">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Drive" c:type="GDrive"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drive-disconnected">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Drive" c:type="GDrive"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drive-eject-button">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Drive" c:type="GDrive"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drive-stop-button">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Drive" c:type="GDrive"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="mount-added">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Mount" c:type="GMount"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="mount-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Mount" c:type="GMount"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="mount-pre-unmount">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Mount" c:type="GMount"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="mount-removed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Mount" c:type="GMount"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="volume-added">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Volume" c:type="GVolume"/>
+          </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="Volume" c:type="GVolume"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="volume-removed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Volume" c:type="GVolume"/>
+          </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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="is_supported">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="get_connected_drives">
+        <callback name="get_connected_drives" c:type="get_connected_drives">
+          <return-value transfer-ownership="full">
+            <type name="GLib.List" c:type="GList*"/>
+          </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" c:type="get_volumes">
+          <return-value transfer-ownership="full">
+            <type name="GLib.List" c:type="GList*"/>
+          </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" c:type="get_mounts">
+          <return-value transfer-ownership="full">
+            <type name="GLib.List" c:type="GList*"/>
+          </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" c:type="get_volume_for_uuid">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_mount_for_uuid">
+        <callback name="get_mount_for_uuid" c:type="get_mount_for_uuid">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="adopt_orphan_mount">
+        <callback name="adopt_orphan_mount" c:type="adopt_orphan_mount">
+          <return-value transfer-ownership="full">
+            <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" c:type="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" c:type="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">
+        <callback name="g_reserved1" c:type="_g_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved2">
+        <callback name="g_reserved2" c:type="_g_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved3">
+        <callback name="g_reserved3" c:type="_g_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved4">
+        <callback name="g_reserved4" c:type="_g_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved5">
+        <callback name="g_reserved5" c:type="_g_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="g_reserved6">
+        <callback name="g_reserved6" c:type="_g_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="ZlibCompressor"
+           c:type="GZlibCompressor"
+           parent="GObject.Object"
+           glib:type-name="GZlibCompressor"
+           glib:get-type="g_zlib_compressor_get_type"
+           glib:type-struct="ZlibCompressorClass">
+      <implements name="Converter"/>
+      <constructor name="new" c:identifier="g_zlib_compressor_new">
+        <return-value transfer-ownership="full">
+          <type name="ZlibCompressor" c:type="GZlibCompressor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="ZlibCompressorFormat" c:type="GZlibCompressorFormat"/>
+          </parameter>
+          <parameter name="level" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <property name="format" writable="1" construct-only="1">
+        <type name="ZlibCompressorFormat" c:type="GZlibCompressorFormat"/>
+      </property>
+      <property name="level" writable="1" construct-only="1">
+        <type name="int" c:type="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"
+                 doc="Used to select the type of data format to use for #GZlibDecompressor
+and #GZlibCompressor."
+                 version="2.24"
+                 glib:type-name="GZlibCompressorFormat"
+                 glib:get-type="g_zlib_compressor_format_get_type"
+                 c:type="GZlibCompressorFormat">
+      <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:type="GZlibDecompressor"
+           parent="GObject.Object"
+           glib:type-name="GZlibDecompressor"
+           glib:get-type="g_zlib_decompressor_get_type"
+           glib:type-struct="ZlibDecompressorClass">
+      <implements name="Converter"/>
+      <constructor name="new" c:identifier="g_zlib_decompressor_new">
+        <return-value transfer-ownership="full">
+          <type name="ZlibDecompressor" c:type="GZlibDecompressor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="ZlibCompressorFormat" c:type="GZlibCompressorFormat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <property name="format" writable="1" construct-only="1">
+        <type name="ZlibCompressorFormat" c:type="GZlibCompressorFormat"/>
+      </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">
+      <return-value transfer-ownership="full">
+        <type name="AppInfo" c:type="GAppInfo*"/>
+      </return-value>
+      <parameters>
+        <parameter name="commandline" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="application_name"
+                   transfer-ownership="none"
+                   allow-none="1">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="AppInfoCreateFlags" c:type="GAppInfoCreateFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="app_info_get_all" c:identifier="g_app_info_get_all">
+      <return-value transfer-ownership="full">
+        <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">
+      <return-value transfer-ownership="full">
+        <type name="GLib.List" c:type="GList*">
+          <type name="AppInfo"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="content_type" transfer-ownership="none">
+          <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">
+      <return-value transfer-ownership="full">
+        <type name="AppInfo" c:type="GAppInfo*"/>
+      </return-value>
+      <parameters>
+        <parameter name="content_type" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="must_support_uris" transfer-ownership="none">
+          <type name="boolean" 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">
+      <return-value transfer-ownership="full">
+        <type name="AppInfo" c:type="GAppInfo*"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri_scheme" transfer-ownership="none">
+          <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">
+      <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="char*"/>
+        </parameter>
+        <parameter name="launch_context" transfer-ownership="none">
+          <type name="AppLaunchContext" c:type="GAppLaunchContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="app_info_reset_type_associations"
+              c:identifier="g_app_info_reset_type_associations">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="content_type" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_initable_new_async"
+              c:identifier="g_async_initable_new_async">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="io_priority" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <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">
+          <type name="any" c:type="gpointer"/>
+        </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="async_initable_newv_async"
+              c:identifier="g_async_initable_newv_async">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="object_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_parameters" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="parameters" transfer-ownership="none">
+          <type name="GObject.Parameter" c:type="GParameter*"/>
+        </parameter>
+        <parameter name="io_priority" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+        <parameter name="callback"
+                   transfer-ownership="none"
+                   scope="async"
+                   closure="6">
+          <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_can_be_executable"
+              c:identifier="g_content_type_can_be_executable">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_equals" c:identifier="g_content_type_equals">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type1" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="type2" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_from_mime_type"
+              c:identifier="g_content_type_from_mime_type">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mime_type" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_get_description"
+              c:identifier="g_content_type_get_description">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_get_icon"
+              c:identifier="g_content_type_get_icon">
+      <return-value transfer-ownership="full">
+        <type name="Icon" c:type="GIcon*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_get_mime_type"
+              c:identifier="g_content_type_get_mime_type">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_guess" c:identifier="g_content_type_guess">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="data_size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="result_uncertain"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="boolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_guess_for_tree"
+              c:identifier="g_content_type_guess_for_tree">
+      <return-value transfer-ownership="full">
+        <array c:type="char**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="root" transfer-ownership="none">
+          <type name="File" c:type="GFile*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_is_a" c:identifier="g_content_type_is_a">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="supertype" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_type_is_unknown"
+              c:identifier="g_content_type_is_unknown">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="content_types_get_registered"
+              c:identifier="g_content_types_get_registered">
+      <return-value transfer-ownership="full">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+    </function>
+    <function name="file_hash" c:identifier="g_file_hash">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="file" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="file_new_for_commandline_arg"
+              c:identifier="g_file_new_for_commandline_arg">
+      <return-value transfer-ownership="full">
+        <type name="File" c:type="GFile*"/>
+      </return-value>
+      <parameters>
+        <parameter name="arg" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="file_new_for_path" c:identifier="g_file_new_for_path">
+      <return-value transfer-ownership="full">
+        <type name="File" c:type="GFile*"/>
+      </return-value>
+      <parameters>
+        <parameter name="path" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="file_new_for_uri" c:identifier="g_file_new_for_uri">
+      <return-value transfer-ownership="full">
+        <type name="File" c:type="GFile*"/>
+      </return-value>
+      <parameters>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="file_parse_name" c:identifier="g_file_parse_name">
+      <return-value transfer-ownership="full">
+        <type name="File" c:type="GFile*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parse_name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="icon_hash" c:identifier="g_icon_hash">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="icon" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="icon_new_for_string"
+              c:identifier="g_icon_new_for_string"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Icon" c:type="GIcon*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="initable_new" c:identifier="g_initable_new">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="object_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+        <parameter name="error" transfer-ownership="none">
+          <type name="GLib.Error" c:type="GError**"/>
+        </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="initable_newv" c:identifier="g_initable_newv" throws="1">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="object_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_parameters" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="parameters" transfer-ownership="none">
+          <type name="GObject.Parameter" c:type="GParameter*"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_error_from_errno" c:identifier="g_io_error_from_errno">
+      <return-value transfer-ownership="full">
+        <type name="IOErrorEnum" c:type="GIOErrorEnum"/>
+      </return-value>
+      <parameters>
+        <parameter name="err_no" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_extension_get_type"
+              c:identifier="g_io_extension_get_type">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="extension" transfer-ownership="none">
+          <type name="IOExtension" c:type="GIOExtension*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_extension_point_implement"
+              c:identifier="g_io_extension_point_implement">
+      <return-value transfer-ownership="full">
+        <type name="IOExtension" c:type="GIOExtension*"/>
+      </return-value>
+      <parameters>
+        <parameter name="extension_point_name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="extension_name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="priority" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_extension_point_lookup"
+              c:identifier="g_io_extension_point_lookup">
+      <return-value transfer-ownership="full">
+        <type name="IOExtensionPoint" c:type="GIOExtensionPoint*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_extension_point_register"
+              c:identifier="g_io_extension_point_register">
+      <return-value transfer-ownership="full">
+        <type name="IOExtensionPoint" c:type="GIOExtensionPoint*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <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">
+      <return-value transfer-ownership="full">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="dirname" transfer-ownership="none">
+          <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">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dirname" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_scheduler_cancel_all_jobs"
+              c:identifier="g_io_scheduler_cancel_all_jobs">
+      <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">
+      <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">
+          <type name="IOSchedulerJobFunc" c:type="GIOSchedulerJobFunc"/>
+        </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>
+        <parameter name="io_priority" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+          <type name="Cancellable" c:type="GCancellable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="simple_async_report_error_in_idle"
+              c:identifier="g_simple_async_report_error_in_idle">
+      <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="callback"
+                   transfer-ownership="none"
+                   scope="async"
+                   closure="2">
+          <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </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="format" transfer-ownership="none">
+          <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">
+      <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="callback"
+                   transfer-ownership="none"
+                   scope="async"
+                   closure="2">
+          <type name="AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="error" transfer-ownership="none">
+          <type name="GLib.Error" c:type="GError*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="srv_target_list_sort"
+              c:identifier="g_srv_target_list_sort">
+      <return-value transfer-ownership="full">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="targets" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_is_mount_path_system_internal"
+              c:identifier="g_unix_is_mount_path_system_internal">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_path" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_at" c:identifier="g_unix_mount_at">
+      <return-value transfer-ownership="full">
+        <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_path" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="time_read" direction="out" transfer-ownership="full">
+          <type name="uint64" c:type="guint64*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_compare" c:identifier="g_unix_mount_compare">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount1" transfer-ownership="none">
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+        <parameter name="mount2" transfer-ownership="none">
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_free" c:identifier="g_unix_mount_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_get_device_path"
+              c:identifier="g_unix_mount_get_device_path">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_get_fs_type"
+              c:identifier="g_unix_mount_get_fs_type">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_get_mount_path"
+              c:identifier="g_unix_mount_get_mount_path">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_guess_can_eject"
+              c:identifier="g_unix_mount_guess_can_eject">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_guess_icon"
+              c:identifier="g_unix_mount_guess_icon">
+      <return-value transfer-ownership="full">
+        <type name="Icon" c:type="GIcon*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_guess_name"
+              c:identifier="g_unix_mount_guess_name">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_guess_should_display"
+              c:identifier="g_unix_mount_guess_should_display">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_is_readonly"
+              c:identifier="g_unix_mount_is_readonly">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_is_system_internal"
+              c:identifier="g_unix_mount_is_system_internal">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="mount_entry" transfer-ownership="none">
+          <type name="UnixMountEntry" c:type="GUnixMountEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_points_changed_since"
+              c:identifier="g_unix_mount_points_changed_since">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="time" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mount_points_get"
+              c:identifier="g_unix_mount_points_get">
+      <return-value transfer-ownership="full">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="time_read" direction="out" transfer-ownership="full">
+          <type name="uint64" c:type="guint64*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mounts_changed_since"
+              c:identifier="g_unix_mounts_changed_since">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="time" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unix_mounts_get" c:identifier="g_unix_mounts_get">
+      <return-value transfer-ownership="full">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="time_read" direction="out" transfer-ownership="full">
+          <type name="uint64" 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/gio.factor b/basis/gio/gio.factor
new file mode 100644 (file)
index 0000000..bd20272
--- /dev/null
@@ -0,0 +1,6 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gir glib gobject ;
+
+IN-GIR: gio vocab:gio/Gio-2.0.gir
+
diff --git a/basis/gir/authors.txt b/basis/gir/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/gir/common/common.factor b/basis/gir/common/common.factor
new file mode 100644 (file)
index 0000000..10e7820
--- /dev/null
@@ -0,0 +1,20 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: assocs kernel namespaces ;
+IN: gir.common
+
+CONSTANT: ffi-vocab "ffi"
+
+SYMBOL: current-lib
+
+SYMBOL: lib-aliases
+lib-aliases [ H{ } ] initialize
+
+SYMBOL: type-infos
+type-infos [ H{ } ] initialize
+
+SYMBOL: aliases
+aliases [ H{ } ] initialize
+
+: get-lib-alias ( lib -- alias )
+    lib-aliases get-global at ;
diff --git a/basis/gir/ffi/ffi.factor b/basis/gir/ffi/ffi.factor
new file mode 100644 (file)
index 0000000..a233f35
--- /dev/null
@@ -0,0 +1,211 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors alien alien.c-types alien.parser assocs combinators
+combinators.short-circuit effects fry generalizations
+gir.common gir.types kernel locals math math.parser namespaces
+parser prettyprint quotations sequences vocabs.parser words
+words.constant ;
+IN: gir.ffi
+
+: string>c-type ( str -- c-type )
+    parse-c-type ;
+    
+: define-each ( nodes quot -- )
+    '[ dup @ >>ffi drop ] each ; inline
+
+: ffi-invoker ( func -- quot )
+    {
+        [ return>> c-type>> string>c-type ]
+        [ drop current-lib get ]
+        [ identifier>> ]
+        [ parameters>> [ c-type>> string>c-type ] map ]
+        [ varargs?>> [ void* suffix ] when ]
+    } cleave \ alien-invoke 5 narray >quotation ;
+
+: ffi-effect ( func -- effect )
+    [ parameters>> [ name>> ] map ]
+    [ varargs?>> [ "varargs" suffix ] when ]
+    [ return>> type>> none-type? { } { "result" } ? ] tri
+    <effect> ;
+
+: define-ffi-function ( func -- word )
+    [ identifier>> create-in dup ]
+    [ ffi-invoker ] [ ffi-effect ] tri define-declared ;
+
+: define-ffi-functions ( functions -- )
+    [ define-ffi-function ] define-each ;
+
+: signal-param-c-type ( param -- c-type )
+    [ c-type>> ] [ type>> ] bi
+    {
+        [ none-type? ]
+        [ simple-type? ]
+        [ enum-type? ]
+        [ bitfield-type? ]
+    } 1|| [ dup "*" tail? [ CHAR: * suffix ] unless ] unless ;
+
+: signal-ffi-invoker ( signal -- quot )
+    [ return>> signal-param-c-type string>c-type ]
+    [ parameters>> [ signal-param-c-type string>c-type ] map ] bi
+    "cdecl" [ [ ] 3curry dip alien-callback ] 3curry ;
+
+: signal-ffi-effect ( signal -- effect )
+    [ parameters>> [ name>> ] map ]
+    [ return>> type>> none-type? { } { "result" } ? ] bi
+    <effect> dup . ;
+
+:: define-ffi-signal ( signal class -- word ) ! сделать попонятнее
+    signal dup .
+    [
+        name>> class c-type>> swap ":" glue create-in
+        [ void* swap typedef ] keep dup
+    ] keep
+    [ signal-ffi-effect "callback-effect" set-word-prop ]
+    [ drop current-lib get "callback-library" set-word-prop ] 
+    [ signal-ffi-invoker (( quot -- alien )) define-inline ] 2tri ;
+
+: define-ffi-signals ( signals class -- )
+    '[ _ define-ffi-signal ] define-each ;
+
+: const-value ( const -- value )
+    [ value>> ] [ type>> name>> ] bi {
+        { "int" [ string>number ] }
+        { "double" [ string>number ] }
+        { "utf8" [ ] }
+    } case ;
+
+: define-ffi-enum ( enum -- word )
+    [
+       members>> [
+           [ c-identifier>> create-in ]
+           [ value>> ] bi define-constant
+       ] each 
+    ] [ c-type>> create-in [ int swap typedef ] keep ] bi ;
+
+: define-ffi-enums ( enums -- )
+    [ define-ffi-enum ] define-each ;
+    
+: define-ffi-bitfields ( bitfields -- )
+    [ define-ffi-enum ] define-each ;
+
+: define-ffi-record ( record -- word )
+    [ disguised?>> void* void ? ]
+    [ c-type>> create-in ] bi [ typedef ] keep ;
+
+: define-ffi-records ( records -- )
+    [ define-ffi-record ] define-each ;
+
+: define-ffi-record-content ( record -- )
+    {
+        [ constructors>> define-ffi-functions ]
+        [ functions>> define-ffi-functions ]
+        [ methods>> define-ffi-functions ]
+    } cleave ;
+
+: define-ffi-records-content ( records -- )
+    [ define-ffi-record-content ] each ;
+
+: define-ffi-union ( union -- word )
+    c-type>> create-in [ void* swap typedef ] keep ;
+
+: define-ffi-unions ( unions -- )
+    [ define-ffi-union ] define-each ;
+
+: define-ffi-callback ( callback -- word )
+    c-type>> create-in [ void* swap typedef ] keep ;
+
+: define-ffi-callbacks ( callbacks -- )
+    [ define-ffi-callback ] define-each ;
+
+: define-ffi-interface ( interface -- word )
+    c-type>> create-in [ void swap typedef ] keep ;
+
+: define-ffi-interfaces ( interfaces -- )
+    [ define-ffi-interface ] define-each ;
+
+! Доделать
+: define-ffi-interface-content ( interface -- )
+    {
+        [ methods>> define-ffi-functions ]
+    } cleave ;
+
+: define-ffi-interfaces-content ( interfaces -- )
+    [ define-ffi-interface-content ] each ;
+
+: get-type-invoker ( name -- quot )
+    [ "GType" current-lib get ] dip
+    { } \ alien-invoke 5 narray >quotation ;
+    
+: define-ffi-class ( class -- word )
+    c-type>> create-in [ void swap typedef ] keep ;
+
+: define-ffi-classes ( class -- )
+    [ define-ffi-class ] define-each ;
+
+: define-ffi-class-content ( class -- )
+    {
+        [ constructors>> define-ffi-functions ]
+        [ functions>> define-ffi-functions ]
+        [ methods>> define-ffi-functions ]
+        [ [ signals>> ] keep define-ffi-signals ]
+    } cleave ;
+
+: define-ffi-classes-content ( class -- )
+    [ define-ffi-class-content ] each ;
+
+: define-get-type ( node -- word )
+    get-type>> dup { "intern" f } member? [ drop f ]
+    [
+        [ create-in dup ] [ get-type-invoker ] bi
+        { } { "type" } <effect> define-declared
+    ] if ;
+
+: define-get-types ( namespace -- )
+    {
+        [ enums>> [ define-get-type drop ] each ]
+        [ bitfields>> [ define-get-type drop ] each ]
+        [ records>> [ define-get-type drop ] each ]
+        [ unions>> [ define-get-type drop ] each ]
+        [ interfaces>> [ define-get-type drop ] each ]
+        [ classes>> [ define-get-type drop ] each ]
+    } cleave ;
+
+: define-ffi-const ( const -- word )
+    [ name>> create-in dup ] [ const-value ] bi define-constant ;
+
+: define-ffi-consts ( consts -- )
+    [ define-ffi-const ] define-each ;
+
+: define-ffi-alias ( alias -- )
+    drop ;
+
+: define-ffi-aliases ( aliases -- )
+    [ define-ffi-alias ] each ;
+
+: prepare-vocab ( repository -- )
+    includes>> lib-aliases get '[ _ at ] map sift
+    [ ffi-vocab "." glue ] map
+    { "alien.c-types" } append
+    [ dup using-vocab? [ drop ] [ use-vocab ] if ] each ;
+
+: define-ffi-namespace ( namespace -- )
+    {
+        [ aliases>> define-ffi-aliases ]
+        [ consts>> define-ffi-consts ]
+        [ enums>> define-ffi-enums ]
+        [ bitfields>> define-ffi-bitfields ]
+        [ records>> define-ffi-records ]
+        [ unions>> define-ffi-unions ]
+        [ interfaces>> define-ffi-interfaces ]
+        [ classes>> define-ffi-classes ]
+        [ callbacks>> define-ffi-callbacks ]
+        [ records>> define-ffi-records-content ]
+        [ classes>> define-ffi-classes-content ]
+        [ interfaces>> define-ffi-interfaces-content ]
+        [ functions>> define-ffi-functions ]
+    } cleave ;
+
+: define-ffi-repository ( repository -- )
+    [ prepare-vocab ]    
+    [ namespace>> define-ffi-namespace ] bi ;
+     
diff --git a/basis/gir/gir.factor b/basis/gir/gir.factor
new file mode 100755 (executable)
index 0000000..6483d18
--- /dev/null
@@ -0,0 +1,24 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors assocs combinators gir.common gir.ffi gir.loader
+kernel lexer locals namespaces sequences vocabs.parser xml ;
+IN: gir
+
+: with-child-vocab ( name quot -- )
+    swap current-vocab name>>
+    [ swap "." glue set-current-vocab call ] keep
+    set-current-vocab ; inline
+
+:: define-gir-vocab ( vocab-name file-name -- )
+    file-name file>xml xml>repository
+
+    vocab-name [ set-current-vocab ] [ current-lib set ] bi
+    {
+        [
+            namespace>> name>> vocab-name swap
+            lib-aliases get set-at
+        ]
+        [ ffi-vocab [ define-ffi-repository ] with-child-vocab ]
+    } cleave ;
+
+SYNTAX: IN-GIR: scan scan define-gir-vocab ;
diff --git a/basis/gir/loader/loader.factor b/basis/gir/loader/loader.factor
new file mode 100644 (file)
index 0000000..410380e
--- /dev/null
@@ -0,0 +1,245 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors ascii combinators fry gir.common gir.repository
+gir.types kernel math math.parser sequences splitting xml.data
+xml.traversal ;
+FROM: namespaces => set get ;
+IN: gir.loader
+
+: word-started? ( word letter -- ? )
+    [ last letter? ] [ LETTER? ] bi* and ;
+
+: camel>factor ( name -- name' )
+    dup 1 head
+    [ 2dup word-started? [ [ CHAR: - suffix ] dip ] when suffix ]
+    reduce rest >lower ;
+
+: underscored>factor ( name -- name' )
+    [ [ CHAR: _ = not ] keep CHAR: - ? ] map >lower ;
+
+: full-type-name>type ( name -- type )
+    [ type new ] dip
+    camel>factor "." split1 dup [ swap ] unless
+    [ get-lib-alias >>namespace ] [ >>name ] bi* absolute-type ;
+
+: node>type ( xml -- type )
+    "name" attr full-type-name>type ;
+
+: xml>array-info ( xml -- array-info )
+    [ array-info new ] dip {
+        [ "zero-terminated" attr [ "1" = ] [ t ] if* >>zero-terminated? ]
+        [ "length" attr [ string>number ] [ f ] if* >>length ]
+        [ "fixed-size" attr [ string>number ] [ f ] if* >>fixed-size ]
+    } cleave ;
+
+: xml>type ( xml -- array-info type )
+    dup name>> main>> {
+        { "array"
+            [
+                [ xml>array-info ]
+                [ first-child-tag node>type ] bi
+            ]
+        }
+        { "type" [ node>type f swap ] }
+        { "varargs" [ drop f f ] }
+    } case ;
+    
+: load-parameter ( param xml -- param )
+    [ "transfer-ownership" attr >>transfer-ownership ]
+    [ first-child-tag "type" attr >>c-type ]
+    [
+        first-child-tag xml>type
+        [ [ >>array-info ] [ >>type ] bi* ] [ 2drop f ] if*
+    ] tri ;
+
+: load-type ( type xml -- type )
+    {
+        [ "name" attr camel>factor >>name ]
+        [ node>type >>type ]
+        [ "type" attr >>c-type ]
+        [ "type-name" attr >>type-name ]
+        [ "get-type" attr >>get-type ]
+    } cleave ;
+
+: xml>parameter ( xml -- parameter )
+    [ parameter new ] dip {
+        [ "name" attr >>name ]
+        [ "direction" attr dup "in" ? >>direction ]
+        [ "allow-none" attr "1" = >>allow-none? ]
+        [ load-parameter ]
+    } cleave ;
+
+: xml>return ( xml -- return )
+    [ return new ] dip {
+        [ drop "result" >>name ]
+        [ load-parameter ]
+    } cleave ;
+
+: load-parameters ( xml callable -- callable )
+    [
+        "parameters" tag-named "parameter" tags-named
+        [ xml>parameter ] map
+        dup { f } tail? [ but-last [ t >>varargs? ] dip ] when
+        >>parameters
+    ]
+    [ "return-value" tag-named xml>return >>return ] bi ;
+
+: xml>function ( xml -- function )
+    [ function new ] dip {
+        [ "name" attr underscored>factor >>name ]
+        [ "identifier" attr >>identifier ]
+        [ load-parameters ]
+    } cleave ;
+
+: (type>param) ( type -- param )
+    [ parameter new ] dip
+    [ c-type>> CHAR: * suffix >>c-type ] [ type>> >>type ] bi
+    "none" >>transfer-ownership
+    "in" >>direction ;
+    
+: type>self-param ( type -- self )
+    (type>param) "self" >>name ;
+
+: type>sender-param ( type -- sender )
+    (type>param) "sender" >>name ;
+
+: signal-data-param ( -- param )
+    parameter new
+    "user_data" >>name
+    "gpointer" >>c-type
+    type new "any" >>name >>type
+    "none" >>transfer-ownership
+    "in" >>direction ;
+
+: 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? ]
+        [ first-child-tag xml>type nip >>type ]
+    } cleave ;
+
+: xml>callback ( xml -- callback )
+    [ callback new ] dip {
+        [ load-type ]
+        [ load-parameters ]
+    } cleave ;
+
+: xml>signal ( xml -- signal )
+    [ signal new ] dip {
+        [ "name" attr camel>factor >>name ]
+        [ node>type >>type ]
+        [ "type" attr >>c-type ]
+        [
+            load-parameters
+            [ signal-data-param suffix ] change-parameters
+        ]
+    } cleave ;
+
+: load-functions ( xml tag-name -- functions )
+    tags-named [ xml>function ] map ;
+
+: xml>class ( xml -- class )
+    [ class new ] dip {
+        [ load-type ]
+        [ "abstract" attr "1" = >>abstract? ]
+        [
+            "parent" attr [ full-type-name>type ] [ f ] if*
+            >>parent
+        ]
+        [ "type-struct" attr >>type-struct ]
+        [ "constructor" load-functions >>constructors ]
+        [ "function" load-functions >>functions ]
+        [
+            "method" load-functions over type>self-param
+            '[ [ _ prefix ] change-parameters ] map
+            >>methods
+        ]       
+        [
+            "signal" tags-named [ xml>signal ] map
+            over type>sender-param
+            '[ [ _ prefix ] change-parameters ] map
+            >>signals
+        ]
+    } cleave ;
+
+: xml>interface ( xml -- interface )
+    [ interface new ] dip {
+        [ load-type ]
+        [
+            "method" load-functions over type>self-param
+            '[ [ _ prefix ] change-parameters ] map
+            >>methods
+        ] 
+    } cleave ;
+
+: xml>member ( xml -- member )
+    [ enum-member new ] dip {
+        [ "name" attr underscored>factor >>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 ;
+
+: xml>record ( xml -- record )
+    [ record new ] dip {
+        [ load-type ]
+        [ "disguised" attr "1" = >>disguised? ]
+        [ "constructor" load-functions >>constructors ]
+        [ "function" load-functions >>functions ]
+        [
+            "method" load-functions over type>self-param
+            '[ [ _ prefix ] change-parameters ] map
+            >>methods
+        ]
+    } cleave ;
+
+: xml>union ( xml -- union )
+    [ union new ] dip load-type ;
+
+: xml>alias ( xml -- alias )
+    [ alias new ] dip {
+        [ node>type >>name ]
+        [ "target" attr full-type-name>type >>target ]
+    } cleave ;
+
+: xml>const ( xml -- const )
+    [ const new ] dip {
+        [ "name" attr >>name ]
+        [ "value" attr >>value ]
+        [ first-child-tag "type" attr >>c-type ]
+        [ first-child-tag xml>type nip >>type ]
+    } cleave ;
+
+: xml>namespace ( xml -- namespace )
+    [ namespace new ] dip {
+        [ "name" attr camel>factor dup current-lib set >>name ]
+        [ "alias" tags-named [ xml>alias ] map >>aliases ]
+        [ "record" tags-named [ xml>record ] map >>records ]
+        [ "union" tags-named [ xml>union ] map >>unions ]
+        [ "callback" tags-named [ xml>callback ] map >>callbacks ]
+        [ "interface" tags-named [ xml>interface ] map >>interfaces ]
+        [ "class" tags-named [ xml>class ] map >>classes ]
+        [ "constant" tags-named [ xml>const ] map >>consts ]
+        [ "enumeration" tags-named [ xml>enum ] map >>enums ]
+        [ "bitfield" tags-named [ xml>enum ] map >>bitfields ]
+        [ "function" load-functions >>functions
+        ]
+    } cleave ;
+
+: xml>repository ( xml -- repository )
+    [ repository new ] dip {
+        [
+            "" "include" f <name> tags-named
+            [ "name" attr camel>factor ] map >>includes
+        ]
+        [ "namespace" tag-named xml>namespace >>namespace ]
+    } cleave ;
+
diff --git a/basis/gir/repository/repository.factor b/basis/gir/repository/repository.factor
new file mode 100644 (file)
index 0000000..5a06785
--- /dev/null
@@ -0,0 +1,60 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: ;
+IN: gir.repository
+
+TUPLE: node name ;
+
+TUPLE: repository includes namespace ;
+
+TUPLE: namespace < node
+    aliases consts classes interfaces records unions callbacks
+    enums bitfields functions ;
+
+TUPLE: alias < node target ;
+
+TUPLE: typed < node type c-type ;
+
+TUPLE: const < typed value ffi ;
+
+TUPLE: type-node < node
+    type c-type type-name get-type ffi ;
+
+TUPLE: record < type-node
+    constructors methods functions disguised? ;
+
+TUPLE: union < type-node ;
+
+TUPLE: class < record
+    abstract? parent type-struct signals ;
+
+TUPLE: interface < type-node
+    methods ;
+
+TUPLE: property < type-node
+    readable? writable? construct? construct-only? ;
+
+TUPLE: callable < type-node
+    return parameters varargs? ;
+
+TUPLE: function < callable identifier ;
+
+TUPLE: callback < type-node return parameters varargs? ;
+
+TUPLE: signal < callback ;
+
+TUPLE: parameter < typed
+    direction allow-none? length? transfer-ownership array-info
+    local ;
+
+TUPLE: return < typed
+    transfer-ownership array-info local ;
+
+TUPLE: type name namespace ;
+
+TUPLE: array-info zero-terminated? fixed-size length ;
+
+TUPLE: enum-member < node value c-identifier ;
+
+TUPLE: enum < type-node members ;
+
diff --git a/basis/gir/types/types.factor b/basis/gir/types/types.factor
new file mode 100644 (file)
index 0000000..2cf0006
--- /dev/null
@@ -0,0 +1,135 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors alien alien.c-types assocs combinators.short-circuit
+gir.common gir.repository kernel namespaces specialized-arrays ;
+IN: gir.types
+
+TUPLE: gwrapper { underlying alien } ;
+TUPLE: grecord < gwrapper ;
+TUPLE: gobject < gwrapper ;
+
+SPECIALIZED-ARRAYS:
+    void* bool int uint char uchar short ushort long ulong
+    longlong ulonglong float double ;
+
+CONSTANT: simple-types H{
+    { "any" {
+        void* *void* >void*-array <direct-void*-array>
+    } }
+    { "boolean" {
+        bool *bool >bool-array <direct-bool-array>
+    } }
+    { "int" {
+        int *int >int-array <direct-int-array>
+    } }
+    { "uint" {
+        uint *uint >uint-array <direct-uint-array>
+    } }
+    { "int8" {
+        char *char >char-array <direct-char-array>
+    } }
+    { "uint8" {
+        uchar *uchar >uchar-array <direct-uchar-array>
+    } }
+    { "int16" {
+        short *short >short-array <direct-short-array>
+    } }
+    { "uint16" {
+        ushort *ushort >ushort-array <direct-ushort-array>
+    } }
+    { "int32" {
+        int *int >int-array <direct-int-array>
+    } }
+    { "uint32" {
+        uint *uint >uint-array <direct-uint-array>
+    } }
+    { "int64" {
+        longlong *longlong
+        >longlong-array <direct-longlong-array>
+    } }
+    { "uint64" {
+        ulonglong *ulonglong
+        >ulonglong-array <direct-ulonglong-array>
+    } }
+    { "long" {
+        long *long >long-array <direct-long-array>
+    } }
+    { "ulong" {
+        ulong *ulong >ulong-array <direct-ulong-array>
+    } }
+    { "float" {
+        float *float >float-array <direct-float-array>
+    } }
+    { "double" {
+        double *double >double-array <direct-double-array>
+    } }
+     { "size_t" {
+        ulong *ulong >ulong-array <direct-ulong-array>
+    } }
+    { "ssize_t" {
+        long *long >long-array <direct-long-array>
+    } }
+    { "time_t" {
+        long *long >long-array <direct-long-array>
+    } }
+     { "gtype" {
+        ulong *ulong >ulong-array <direct-ulong-array>
+    } }    
+}
+
+TUPLE: type-info c-type-word type-word ;
+
+TUPLE: enum-info < type-info ;
+
+TUPLE: bitfield-info < type-info ;
+
+TUPLE: record-info < type-info ;
+
+TUPLE: union-info < type-info ;
+
+TUPLE: callback-info < type-info ;
+
+TUPLE: class-info < type-info ;
+
+TUPLE: interface-info < type-info ;
+
+: aliased-type ( alias -- type )
+    aliases get ?at [ aliased-type ] when ;
+
+: get-type-info ( type -- info )
+    aliased-type type-infos get at ;
+
+PREDICATE: none-type < type
+    [ namespace>> not ] [ name>> "none" = ] bi and ;
+
+PREDICATE: simple-type < type
+    aliased-type
+    [ namespace>> not ] [ name>> simple-types key? ] bi and ;
+
+PREDICATE: utf8-type < type
+    aliased-type
+    [ namespace>> not ] [ name>> "utf8" = ] bi and ;
+
+PREDICATE: any-type < type
+    aliased-type
+    [ namespace>> not ] [ name>> "any" = ] bi and ;
+   
+PREDICATE: enum-type < type get-type-info enum-info? ;
+
+PREDICATE: bitfield-type < type get-type-info bitfield-info? ;
+
+PREDICATE: record-type < type get-type-info record-info? ;
+
+PREDICATE: union-type < type get-type-info union-info? ;
+
+PREDICATE: callback-type < type get-type-info callback-info? ;
+
+PREDICATE: class-type < type get-type-info class-info? ;
+
+PREDICATE: interface-type < type get-type-info interface-info? ;
+
+: absolute-type ( type -- type' )
+    dup {
+        [ namespace>> ] [ simple-type? ]
+        [ utf8-type? ] [ none-type? ]
+    } 1|| [ current-lib get >>namespace ] unless ;
diff --git a/basis/glib/GLib-2.0.gir b/basis/glib/GLib-2.0.gir
new file mode 100644 (file)
index 0000000..dec330b
--- /dev/null
@@ -0,0 +1,20295 @@
+<?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">
+  <package name="glib-2.0"/>
+  <c:include name="glib.h"/>
+  <namespace name="GLib"
+             version="2.0"
+             shared-library="libglib-2.0.so.0"
+             c:prefix="g">
+    <alias name="DateDay" target="uint8" c:type="GDateDay"/>
+    <alias name="DateYear" target="uint16" c:type="GDateYear"/>
+    <alias name="Pid" target="int" c:type="GPid"/>
+    <alias name="Quark" target="uint32" c:type="GQuark"/>
+    <alias name="Time" target="int32" c:type="GTime"/>
+    <alias name="intptr" target="long" c:type="gintptr"/>
+    <alias name="offset" target="int64" c:type="goffset"/>
+    <alias name="uintptr" target="ulong" c:type="guintptr"/>
+    <alias name="unichar" target="uint32" c:type="gunichar"/>
+    <alias name="unichar2" target="uint16" c:type="gunichar2"/>
+    <constant name="ALLOCATOR_LIST" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="ALLOCATOR_NODE" value="3">
+      <type name="int"/>
+    </constant>
+    <constant name="ALLOCATOR_SLIST" value="2">
+      <type name="int"/>
+    </constant>
+    <constant name="ALLOC_AND_FREE" value="2">
+      <type name="int"/>
+    </constant>
+    <constant name="ALLOC_ONLY" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="ASCII_DTOSTR_BUF_SIZE" value="39">
+      <type name="int"/>
+    </constant>
+    <constant name="ATOMIC_OP_MEMORY_BARRIER_NEEDED" value="1">
+      <type name="int"/>
+    </constant>
+    <record name="Allocator" c:type="GAllocator">
+    </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="uint" 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">
+    </record>
+    <constant name="BIG_ENDIAN" value="4321">
+      <type name="int"/>
+    </constant>
+    <record name="BookmarkFile" c:type="GBookmarkFile">
+    </record>
+    <enumeration name="BookmarkFileError"
+                 c:type="GBookmarkFileError"
+                 glib:error-quark="g_bookmark_file_error_quark">
+      <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="any" c:type="guint8*"/>
+      </field>
+      <field name="len" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <constant name="CAN_INLINE" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="CSET_A_2_Z" value="ABCDEFGHIJKLMNOPQRSTUVWXYZ">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CSET_DIGITS" value="0123456789">
+      <type name="utf8"/>
+    </constant>
+    <constant name="CSET_a_2_z" value="abcdefghijklmnopqrstuvwxyz">
+      <type name="utf8"/>
+    </constant>
+    <record name="Cache" c:type="GCache">
+    </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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="CacheDupFunc" c:type="GCacheDupFunc">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="CacheNewFunc" c:type="GCacheNewFunc">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="Checksum"
+            c:type="GChecksum"
+            doc="An opaque structure representing a checksumming operation.
+To create a new GChecksum, use g_checksum_new(). To free
+a GChecksum, use g_checksum_free()."
+            version="2.16">
+    </record>
+    <enumeration name="ChecksumType"
+                 doc="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."
+                 version="2.16"
+                 c:type="GChecksumType">
+      <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">
+      <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>
+        <parameter name="status" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="CompareDataFunc" c:type="GCompareDataFunc">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="CompareFunc" c:type="GCompareFunc">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="Completion" c:type="GCompletion">
+      <field name="items" writable="1">
+        <type name="List" c:type="GList*"/>
+      </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="List" c:type="GList*"/>
+      </field>
+      <field name="strncmp_func" writable="1">
+        <type name="CompletionStrncmpFunc" c:type="GCompletionStrncmpFunc"/>
+      </field>
+    </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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="CompletionStrncmpFunc" c:type="GCompletionStrncmpFunc">
+      <return-value transfer-ownership="none">
+        <type name="int" 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="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="Cond" c:type="GCond">
+    </record>
+    <enumeration name="ConvertError"
+                 c:type="GConvertError"
+                 glib:error-quark="g_convert_error_quark">
+      <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"
+              doc="A function of this signature is used to copy the node data
+when doing a deep-copy of a tree."
+              version="2.4">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="src" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="DATALIST_FLAGS_MASK" value="3">
+      <type name="int"/>
+    </constant>
+    <constant name="DATE_BAD_DAY" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="DATE_BAD_JULIAN" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="DATE_BAD_YEAR" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="DIR_SEPARATOR_S" value="\">
+      <type name="utf8"/>
+    </constant>
+    <record name="Data" c:type="GData">
+    </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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="Date" c:type="GDate">
+      <field name="julian_days" writable="1" bits="32">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="julian" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="dmy" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="day" writable="1" bits="6">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="month" writable="1" bits="4">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="year" writable="1" bits="16">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </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>
+    <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="uint" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="Dir" c:type="GDir">
+    </record>
+    <union name="DoubleIEEE754" c:type="GDoubleIEEE754">
+      <field name="v_double" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <record name="mpn" c:type="mpn">
+        <field name="mantissa_low" writable="1" bits="32">
+          <type name="uint" c:type="guint"/>
+        </field>
+        <field name="mantissa_high" writable="1" bits="20">
+          <type name="uint" c:type="guint"/>
+        </field>
+        <field name="biased_exponent" writable="1" bits="11">
+          <type name="uint" c:type="guint"/>
+        </field>
+        <field name="sign" writable="1" bits="1">
+          <type name="uint" c:type="guint"/>
+        </field>
+      </record>
+    </union>
+    <constant name="E" value="2.71828182846">
+      <type name="double"/>
+    </constant>
+    <callback name="EqualFunc" c:type="GEqualFunc">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="a" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="any" 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="int" c:type="gint"/>
+      </field>
+      <field name="message" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </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>
+    <constant name="FALSE" value="0">
+      <type name="int"/>
+    </constant>
+    <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="float" c:type="gfloat"/>
+      </field>
+      <record name="mpn" c:type="mpn">
+        <field name="mantissa" writable="1" bits="23">
+          <type name="uint" c:type="guint"/>
+        </field>
+        <field name="biased_exponent" writable="1" bits="8">
+          <type name="uint" c:type="guint"/>
+        </field>
+        <field name="sign" writable="1" bits="1">
+          <type name="uint" 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="any" 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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="GINT16_FORMAT" value="hi">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GINT16_MODIFIER" value="h">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GINT32_FORMAT" value="i">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GINT32_MODIFIER" value="">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GINT64_FORMAT" value="li">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GINT64_MODIFIER" value="l">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GINTPTR_FORMAT" value="li">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GINTPTR_MODIFIER" value="l">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GNUC_FUNCTION" value="">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GNUC_PRETTY_FUNCTION" value="">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GSIZE_FORMAT" value="lu">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GSIZE_MODIFIER" value="l">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GSSIZE_FORMAT" value="li">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GUINT16_FORMAT" value="hu">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GUINT32_FORMAT" value="u">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GUINT64_FORMAT" value="lu">
+      <type name="utf8"/>
+    </constant>
+    <constant name="GUINTPTR_FORMAT" value="lu">
+      <type name="utf8"/>
+    </constant>
+    <constant name="HAVE_GINT64" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="HAVE_GNUC_VARARGS" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="HAVE_GNUC_VISIBILITY" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="HAVE_GROWING_STACK" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="HAVE_INLINE" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="HAVE_ISO_VARARGS" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="HAVE___INLINE" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="HAVE___INLINE__" value="1">
+      <type name="int"/>
+    </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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="HOOK_FLAG_USER_SHIFT" value="4">
+      <type name="int"/>
+    </constant>
+    <callback name="HRFunc" c:type="GHRFunc">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="HashFunc" c:type="GHashFunc">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="HashTable" c:type="GHashTable">
+    </record>
+    <record name="HashTableIter" c:type="GHashTableIter">
+      <field name="dummy1" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="dummy2" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="dummy3" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="dummy4" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="dummy5" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="dummy6" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+    </record>
+    <record name="Hook" c:type="GHook">
+      <field name="data" writable="1">
+        <type name="any" 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="uint" c:type="guint"/>
+      </field>
+      <field name="hook_id" writable="1">
+        <type name="ulong" c:type="gulong"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="func" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="destroy" writable="1">
+        <type name="DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+    </record>
+    <callback name="HookCheckFunc" c:type="GHookCheckFunc">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="HookCheckMarshaller" c:type="GHookCheckMarshaller">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="HookCompareFunc" c:type="GHookCompareFunc">
+      <return-value transfer-ownership="none">
+        <type name="int" 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="boolean" 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="any" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="HookList" c:type="GHookList">
+      <field name="seq_id" writable="1">
+        <type name="ulong" c:type="gulong"/>
+      </field>
+      <field name="hook_size" writable="1" bits="16">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_setup" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="hooks" writable="1">
+        <type name="Hook" c:type="GHook*"/>
+      </field>
+      <field name="dummy3" writable="1">
+        <type name="any" 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="any"/>
+        </array>
+      </field>
+    </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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="IConv" c:type="GIConv" disguised="1">
+    </record>
+    <constant name="IEEE754_DOUBLE_BIAS" value="1023">
+      <type name="int"/>
+    </constant>
+    <constant name="IEEE754_FLOAT_BIAS" value="127">
+      <type name="int"/>
+    </constant>
+    <record name="IOChannel" c:type="GIOChannel">
+      <field name="ref_count" writable="1">
+        <type name="int" 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="uint" c:type="guint"/>
+      </field>
+      <field name="buf_size" writable="1">
+        <type name="size_t" 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="int8"/>
+        </array>
+      </field>
+      <field name="use_buffer" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="do_encode" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="close_on_unref" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_readable" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_writeable" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_seekable" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="reserved1" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="reserved2" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+    </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>
+    <bitfield 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"/>
+    </bitfield>
+    <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="boolean" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="IOFuncs" c:type="GIOFuncs">
+      <field name="io_read">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="io_write">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="io_seek">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="io_close">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="io_create_watch">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="io_free">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="io_set_flags">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="io_get_flags">
+        <type name="any" c:type="pointer"/>
+      </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"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_CATEGORIES" value="Categories">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_COMMENT" value="Comment">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_EXEC" value="Exec">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_GENERIC_NAME" value="GenericName">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_HIDDEN" value="Hidden">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_ICON" value="Icon">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_MIME_TYPE" value="MimeType">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_NAME" value="Name">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN" value="NotShowIn">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_NO_DISPLAY" value="NoDisplay">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN" value="OnlyShowIn">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_PATH" value="Path">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY" value="StartupNotify">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS"
+              value="StartupWMClass">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_TERMINAL" value="Terminal">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_TRY_EXEC" value="TryExec">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_TYPE" value="Type">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_URL" value="URL">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_KEY_VERSION" value="Version">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_TYPE_APPLICATION" value="Application">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_TYPE_DIRECTORY" value="Directory">
+      <type name="utf8"/>
+    </constant>
+    <constant name="KEY_FILE_DESKTOP_TYPE_LINK" value="Link">
+      <type name="utf8"/>
+    </constant>
+    <record name="KeyFile" c:type="GKeyFile">
+    </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="int"/>
+    </constant>
+    <constant name="LN10" value="2.30258509299">
+      <type name="double"/>
+    </constant>
+    <constant name="LN2" value="0.69314718056">
+      <type name="double"/>
+    </constant>
+    <constant name="LOG_2_BASE_10" value="0.301029995664">
+      <type name="double"/>
+    </constant>
+    <constant name="LOG_FATAL_MASK" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="LOG_LEVEL_USER_SHIFT" value="8">
+      <type name="int"/>
+    </constant>
+    <record name="List" c:type="GList">
+      <field name="data" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="next" writable="1">
+        <type name="List" c:type="GList*"/>
+      </field>
+      <field name="prev" writable="1">
+        <type name="List" c:type="GList*"/>
+      </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="any" 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="int"/>
+    </constant>
+    <constant name="MAXPATHLEN" value="1024">
+      <type name="int"/>
+    </constant>
+    <constant name="MICRO_VERSION" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="MINOR_VERSION" value="24">
+      <type name="int"/>
+    </constant>
+    <constant name="MODULE_SUFFIX" value="so">
+      <type name="utf8"/>
+    </constant>
+    <constant name="MUTEX_DEBUG_MAGIC" value="-119436585">
+      <type name="int"/>
+    </constant>
+    <record name="MainContext" c:type="GMainContext">
+    </record>
+    <record name="MainLoop" c:type="GMainLoop">
+    </record>
+    <record name="MappedFile" c:type="GMappedFile">
+    </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">
+    </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">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="end_element">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="text">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="passthrough">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="error">
+        <type name="any" c:type="pointer"/>
+      </field>
+    </record>
+    <record name="MatchInfo" c:type="GMatchInfo">
+    </record>
+    <record name="MemChunk" c:type="GMemChunk">
+    </record>
+    <record name="MemVTable" c:type="GMemVTable">
+      <field name="malloc">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="realloc">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="free">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="calloc">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="try_malloc">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="try_realloc">
+        <type name="any" c:type="pointer"/>
+      </field>
+    </record>
+    <record name="Mutex" c:type="GMutex">
+    </record>
+    <constant name="NULL" value="0">
+      <type name="int"/>
+    </constant>
+    <record name="Node" c:type="GNode">
+      <field name="data" writable="1">
+        <type name="any" 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>
+    </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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="NodeTraverseFunc" c:type="GNodeTraverseFunc">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="any" 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"/>
+    </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="any" c:type="gpointer"/>
+      </field>
+    </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"
+                 doc="extra argument.
+uses of the option are collected into an array of strings.
+multiple uses of the option are collected into an array of strings.
+can be formatted either for the user&apos;s locale or for the &quot;C&quot; locale. Since 2.12
+but for larger numbers. The number can be in decimal base, or in hexadecimal
+(when prefixed with &lt;literal&gt;0x&lt;/literal&gt;, for example, &lt;literal&gt;0xffffffff&lt;/literal&gt;).
+Since 2.12
+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:"
+                 c:type="GOptionArg">
+      <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"
+              doc="single dash followed by a single letter (for a short name) or two dashes
+followed by a long option name.
+was created with g_option_group_new()
+is intended to be used for errors in #GOptionArgFunc callbacks.
+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()"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="option_name" 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="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="OptionContext"
+            c:type="GOptionContext"
+            doc="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.">
+    </record>
+    <record name="OptionEntry"
+            c:type="GOptionEntry"
+            doc="in a commandline as --&lt;replaceable&gt;long_name&lt;/replaceable&gt;. Every
+option must have a long name. To resolve conflicts if multiple
+option groups contain the same long name, it is also possible to
+specify the option as
+--&lt;replaceable&gt;groupname&lt;/replaceable&gt;-&lt;replaceable&gt;long_name&lt;/replaceable&gt;.
+-&lt;replaceable&gt;short_name&lt;/replaceable&gt; in a commandline. @short_name must be
+a printable ASCII character different from &apos;-&apos;, or zero if the option has no
+short name.
+point to a #GOptionArgFunc callback function, which will be called to handle
+the extra argument. Otherwise, @arg_data is a pointer to a location to store
+the value, the required type of the location depends on the @arg type:
+&lt;variablelist&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;%G_OPTION_ARG_NONE&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;%gboolean&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;%G_OPTION_ARG_STRING&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;%gchar*&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;%G_OPTION_ARG_INT&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;%gint&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;%G_OPTION_ARG_FILENAME&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;%gchar*&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;%G_OPTION_ARG_STRING_ARRAY&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;%gchar**&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;%G_OPTION_ARG_FILENAME_ARRAY&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;%gchar**&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;varlistentry&gt;
+&lt;term&gt;%G_OPTION_ARG_DOUBLE&lt;/term&gt;
+&lt;listitem&gt;&lt;para&gt;%gdouble&lt;/para&gt;&lt;/listitem&gt;
+&lt;/varlistentry&gt;
+&lt;/variablelist&gt;
+If @arg type is %G_OPTION_ARG_STRING or %G_OPTION_ARG_FILENAME the location
+will contain a newly allocated string if the option was given. That string
+needs to be freed by the callee using g_free(). Likewise if @arg type is
+%G_OPTION_ARG_STRING_ARRAY or %G_OPTION_ARG_FILENAME_ARRAY, the data should
+be freed using g_strfreev().
+output. The @description is translated using the @translate_func of the
+group, see g_option_group_set_translation_domain().
+by the option in &lt;option&gt;--help&lt;/option&gt;
+output. The @arg_description is translated using the @translate_func of the
+group, see g_option_group_set_translation_domain().
+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().">
+      <field name="long_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="short_name" writable="1">
+        <type name="int8" c:type="gchar"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="arg" writable="1">
+        <type name="OptionArg" c:type="GOptionArg"/>
+      </field>
+      <field name="arg_data" writable="1">
+        <type name="any" 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"
+                 doc="This error will only be reported, if the parser hasn&apos;t been instructed
+to ignore unknown options, see g_option_context_set_ignore_unknown_options().
+Error codes returned by option parsing."
+                 c:type="GOptionError"
+                 glib:error-quark="g_option_error_quark">
+      <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"
+              doc="was created with g_option_group_new()
+The type of function to be used as callback when a parse error occurs."
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+        <parameter name="group" transfer-ownership="none">
+          <type name="OptionGroup" c:type="GOptionGroup*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="OptionFlags"
+              doc="output.
+&lt;option&gt;--help&lt;/option&gt; output, even if it is defined in a group.
+indicates that the sense of the option is reversed.
+this flag indicates that the callback does not take any argument
+(like a %G_OPTION_ARG_NONE option). Since 2.8
+kind, this flag indicates that the argument should be passed to the
+callback in the GLib filename encoding rather than UTF-8. Since 2.8
+kind, this flag indicates that the argument supply is optional. If no argument
+is given then data of %GOptionParseFunc will be set to NULL. Since 2.8
+which prefixes long option names with &lt;literal&gt;groupname-&lt;/literal&gt; if
+there is a conflict. This option should only be used in situations where
+aliasing is necessary to model some legacy commandline interface. It is
+not safe to use this option, unless all option groups are under your
+direct control. Since 2.8.
+Flags which modify individual options."
+              c:type="GOptionFlags">
+      <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"
+            doc="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.">
+    </record>
+    <callback name="OptionParseFunc"
+              c:type="GOptionParseFunc"
+              doc="was created with g_option_group_new()
+The type of function that can be called before and after parsing.
+occurred, in which case @error should be set with g_set_error()"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+        <parameter name="group" transfer-ownership="none">
+          <type name="OptionGroup" c:type="GOptionGroup*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <constant name="PDP_ENDIAN" value="3412">
+      <type name="int"/>
+    </constant>
+    <constant name="PI" value="3.14159265359">
+      <type name="double"/>
+    </constant>
+    <constant name="PI_2" value="1.57079632679">
+      <type name="double"/>
+    </constant>
+    <constant name="PI_4" value="0.785398163397">
+      <type name="double"/>
+    </constant>
+    <constant name="POLLFD_FORMAT" value="%#I64x">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRIORITY_DEFAULT" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="PRIORITY_DEFAULT_IDLE" value="200">
+      <type name="int"/>
+    </constant>
+    <constant name="PRIORITY_HIGH" value="-100">
+      <type name="int"/>
+    </constant>
+    <constant name="PRIORITY_HIGH_IDLE" value="100">
+      <type name="int"/>
+    </constant>
+    <constant name="PRIORITY_LOW" value="300">
+      <type name="int"/>
+    </constant>
+    <record name="PatternSpec" c:type="GPatternSpec">
+    </record>
+    <record name="PollFD" c:type="GPollFD">
+      <field name="fd" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="events" writable="1">
+        <type name="ushort" c:type="gushort"/>
+      </field>
+      <field name="revents" writable="1">
+        <type name="ushort" c:type="gushort"/>
+      </field>
+    </record>
+    <callback name="PollFunc" c:type="GPollFunc">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="ufds" transfer-ownership="none">
+          <type name="PollFD" c:type="GPollFD*"/>
+        </parameter>
+        <parameter name="nfsd" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="timeout_" transfer-ownership="none">
+          <type name="int" 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">
+    </record>
+    <record name="PtrArray" c:type="GPtrArray">
+      <field name="pdata" writable="1">
+        <type name="any" c:type="gpointer*"/>
+      </field>
+      <field name="len" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="Queue" c:type="GQueue">
+      <field name="head" writable="1">
+        <type name="List" c:type="GList*"/>
+      </field>
+      <field name="tail" writable="1">
+        <type name="List" c:type="GList*"/>
+      </field>
+      <field name="length" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="Rand" c:type="GRand">
+    </record>
+    <record name="Regex" c:type="GRegex">
+    </record>
+    <bitfield name="RegexCompileFlags" c:type="GRegexCompileFlags">
+      <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"
+                 c:type="GRegexError"
+                 glib:error-quark="g_regex_error_quark">
+      <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">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="match_info" transfer-ownership="none">
+          <type name="MatchInfo" c:type="GMatchInfo*"/>
+        </parameter>
+        <parameter name="result" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="2">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="RegexMatchFlags" c:type="GRegexMatchFlags">
+      <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">
+    </record>
+    <constant name="SEARCHPATH_SEPARATOR_S" value=";">
+      <type name="utf8"/>
+    </constant>
+    <constant name="SIZEOF_LONG" value="8">
+      <type name="int"/>
+    </constant>
+    <constant name="SIZEOF_SIZE_T" value="8">
+      <type name="int"/>
+    </constant>
+    <constant name="SIZEOF_VOID_P" value="8">
+      <type name="int"/>
+    </constant>
+    <record name="SList" c:type="GSList">
+      <field name="data" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="next" writable="1">
+        <type name="SList" c:type="GSList*"/>
+      </field>
+    </record>
+    <constant name="SQRT2" value="1.41421356237">
+      <type name="double"/>
+    </constant>
+    <constant name="STR_DELIMITERS" value="_-|&gt; &lt;.">
+      <type name="utf8"/>
+    </constant>
+    <constant name="SYSDEF_AF_INET" value="2">
+      <type name="int"/>
+    </constant>
+    <constant name="SYSDEF_AF_INET6" value="10">
+      <type name="int"/>
+    </constant>
+    <constant name="SYSDEF_AF_UNIX" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="SYSDEF_MSG_DONTROUTE" value="4">
+      <type name="int"/>
+    </constant>
+    <constant name="SYSDEF_MSG_OOB" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="SYSDEF_MSG_PEEK" value="2">
+      <type name="int"/>
+    </constant>
+    <record name="Scanner" c:type="GScanner">
+      <field name="user_data" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="max_parse_errors" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="parse_errors" writable="1">
+        <type name="uint" 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="uint" c:type="guint"/>
+      </field>
+      <field name="position" writable="1">
+        <type name="uint" 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="uint" c:type="guint"/>
+      </field>
+      <field name="next_position" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="symbol_table" writable="1">
+        <type name="HashTable" c:type="GHashTable*"/>
+      </field>
+      <field name="input_fd" writable="1">
+        <type name="int" 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="uint" c:type="guint"/>
+      </field>
+      <field name="msg_handler" writable="1">
+        <type name="ScannerMsgFunc" c:type="GScannerMsgFunc"/>
+      </field>
+    </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="uint" c:type="guint"/>
+      </field>
+      <field name="skip_comment_multi" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="skip_comment_single" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scan_comment_multi" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scan_identifier" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scan_identifier_1char" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scan_identifier_NULL" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scan_symbols" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scan_binary" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scan_octal" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scan_float" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scan_hex" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scan_hex_dollar" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scan_string_sq" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scan_string_dq" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="numbers_2_int" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="int_2_float" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="identifier_2_string" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="char_2_token" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="symbol_2_token" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scope_0_fallback" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="store_int64" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="padding_dummy" writable="1">
+        <type name="uint" 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="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="error" transfer-ownership="none">
+          <type name="boolean" 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">
+    </record>
+    <record name="SequenceIter" c:type="GSequenceIter">
+    </record>
+    <callback name="SequenceIterCompareFunc" c:type="GSequenceIterCompareFunc">
+      <return-value transfer-ownership="none">
+        <type name="int" 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="any" 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">
+      <field name="callback_data" writable="1">
+        <type name="any" 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="uint" c:type="guint"/>
+      </field>
+      <field name="context" writable="1">
+        <type name="MainContext" c:type="GMainContext*"/>
+      </field>
+      <field name="priority" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="source_id" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="poll_fds" writable="1">
+        <type name="SList" c:type="GSList*"/>
+      </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="reserved1" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="reserved2" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+    </record>
+    <record name="SourceCallbackFuncs" c:type="GSourceCallbackFuncs">
+      <field name="ref">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="unref">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="et">
+        <type name="any" c:type="pointer"/>
+      </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="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none" closure="0">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="SourceFuncs" c:type="GSourceFuncs">
+      <field name="prepare">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="check">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="dispatch">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="finalize">
+        <type name="any" c:type="pointer"/>
+      </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="any" 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="StaticMutex" c:type="GStaticMutex">
+      <field name="runtime_mutex" writable="1">
+        <type name="any" c:type="any*"/>
+      </field>
+      <union name="static_mutex" c:type="static_mutex">
+        <field name="pad" writable="1">
+          <array zero-terminated="0" c:type="char" fixed-size="40">
+            <type name="int8"/>
+          </array>
+        </field>
+        <field name="dummy_double" writable="1">
+          <type name="double" c:type="double"/>
+        </field>
+        <field name="dummy_pointer" writable="1">
+          <type name="any" c:type="void*"/>
+        </field>
+        <field name="dummy_long" writable="1">
+          <type name="long" c:type="long"/>
+        </field>
+      </union>
+    </record>
+    <record name="StaticPrivate" c:type="GStaticPrivate">
+      <field name="index" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </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="uint" c:type="guint"/>
+      </field>
+      <field name="have_writer" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="want_to_read" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="want_to_write" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </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="uint" c:type="guint"/>
+      </field>
+      <field name="owner" writable="1">
+        <type name="SystemThread" c:type="GSystemThread"/>
+      </field>
+    </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="size_t" c:type="gsize"/>
+      </field>
+      <field name="allocated_len" writable="1">
+        <type name="size_t" c:type="gsize"/>
+      </field>
+    </record>
+    <record name="StringChunk" c:type="GStringChunk">
+    </record>
+    <union name="SystemThread" c:type="GSystemThread">
+      <field name="data" writable="1">
+        <array zero-terminated="0" c:type="char" fixed-size="8">
+          <type name="int8"/>
+        </array>
+      </field>
+      <field name="dummy_double" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+      <field name="dummy_pointer" writable="1">
+        <type name="any" c:type="void*"/>
+      </field>
+      <field name="dummy_long" writable="1">
+        <type name="long" c:type="long"/>
+      </field>
+    </union>
+    <record name="TestCase" c:type="GTestCase">
+    </record>
+    <record name="TestConfig" c:type="GTestConfig">
+      <field name="test_initialized" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="test_quick" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="test_perf" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="test_verbose" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="test_quiet" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+    </record>
+    <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="SList" c:type="GSList*"/>
+      </field>
+    </record>
+    <callback name="TestLogFatalFunc"
+              c:type="GTestLogFatalFunc"
+              doc="Specifies the prototype of fatal log handler functions."
+              version="2.22">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </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="any" 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="uint" c:type="guint"/>
+      </field>
+      <field name="strings" writable="1">
+        <type name="utf8" c:type="gchar**"/>
+      </field>
+      <field name="n_nums" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="nums" writable="1">
+        <type name="any" c:type="long*"/>
+      </field>
+    </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">
+    </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" writable="1">
+        <type name="ThreadFunc" c:type="GThreadFunc"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="joinable" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="priority" writable="1">
+        <type name="ThreadPriority" c:type="GThreadPriority"/>
+      </field>
+    </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">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ThreadFunctions" c:type="GThreadFunctions">
+      <field name="mutex_new">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="mutex_lock">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="mutex_trylock">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="mutex_unlock">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="mutex_free">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="cond_new">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="cond_signal">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="cond_broadcast">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="cond_wait">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="cond_timed_wait">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="cond_free">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="private_new">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="private_get">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="private_set">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="thread_create">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="thread_yield">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="thread_join">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="thread_exit">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="thread_set_priority">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="thread_self">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="thread_equal">
+        <type name="any" c:type="pointer"/>
+      </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="any" c:type="gpointer"/>
+      </field>
+      <field name="exclusive" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+    </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>
+    <record name="TimeVal" c:type="GTimeVal">
+      <field name="tv_sec" writable="1">
+        <type name="long" c:type="glong"/>
+      </field>
+      <field name="tv_usec" writable="1">
+        <type name="long" c:type="glong"/>
+      </field>
+    </record>
+    <record name="Timer" c:type="GTimer">
+    </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="any" 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="ulong" c:type="gulong"/>
+      </field>
+      <field name="v_octal" writable="1">
+        <type name="ulong" c:type="gulong"/>
+      </field>
+      <field name="v_int" writable="1">
+        <type name="ulong" c:type="gulong"/>
+      </field>
+      <field name="v_int64" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="v_float" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="v_hex" writable="1">
+        <type name="ulong" 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="uint8" c:type="guchar"/>
+      </field>
+      <field name="v_error" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </union>
+    <callback name="TranslateFunc"
+              c:type="GTranslateFunc"
+              doc="in g_option_group_set_translate_func()
+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.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" 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="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" 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">
+    </record>
+    <record name="Tuples" c:type="GTuples">
+      <field name="len" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <constant name="URI_RESERVED_CHARS_GENERIC_DELIMITERS" value=":/?#[]@">
+      <type name="utf8"/>
+    </constant>
+    <constant name="URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS"
+              value="!$&amp;&apos;()*+,;=">
+      <type name="utf8"/>
+    </constant>
+    <constant name="USEC_PER_SEC" value="1000000">
+      <type name="int"/>
+    </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"/>
+    </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"
+                 doc="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."
+                 version="2.14"
+                 c:type="GUserDirectory">
+      <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="int"/>
+    </constant>
+    <record name="Variant" c:type="GVariant">
+    </record>
+    <record name="VariantBuilder" c:type="GVariantBuilder">
+      <field name="x" writable="1">
+        <array zero-terminated="0" c:type="gsize" fixed-size="16">
+          <type name="size_t"/>
+        </array>
+      </field>
+    </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="gsize" fixed-size="16">
+          <type name="size_t"/>
+        </array>
+      </field>
+    </record>
+    <record name="VariantType"
+            c:type="GVariantType"
+            doc="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().">
+    </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="int"/>
+    </constant>
+    <function name="access" c:identifier="g_access">
+      <return-value transfer-ownership="none">
+        <type name="int" 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="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="allocator_free" c:identifier="g_allocator_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="allocator" transfer-ownership="none">
+          <type name="Allocator" c:type="GAllocator*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="allocator_new" c:identifier="g_allocator_new">
+      <return-value transfer-ownership="full">
+        <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="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_append_vals" c:identifier="g_array_append_vals">
+      <return-value transfer-ownership="full">
+        <type name="Array" c:type="GArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="Array" c:type="GArray*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" 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">
+          <type name="Array" c:type="GArray*"/>
+        </parameter>
+        <parameter name="free_segment" transfer-ownership="none">
+          <type name="boolean" 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="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="Array" c:type="GArray*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_insert_vals" c:identifier="g_array_insert_vals">
+      <return-value transfer-ownership="full">
+        <type name="Array" c:type="GArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="Array" c:type="GArray*"/>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_new" c:identifier="g_array_new">
+      <return-value transfer-ownership="full">
+        <type name="Array" c:type="GArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="zero_terminated" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="clear_" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="element_size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_prepend_vals" c:identifier="g_array_prepend_vals">
+      <return-value transfer-ownership="full">
+        <type name="Array" c:type="GArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="Array" c:type="GArray*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_ref" c:identifier="g_array_ref">
+      <return-value transfer-ownership="full">
+        <type name="Array" c:type="GArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="Array" c:type="GArray*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_remove_index" c:identifier="g_array_remove_index">
+      <return-value transfer-ownership="full">
+        <type name="Array" c:type="GArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="Array" c:type="GArray*"/>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_remove_index_fast"
+              c:identifier="g_array_remove_index_fast">
+      <return-value transfer-ownership="full">
+        <type name="Array" c:type="GArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="Array" c:type="GArray*"/>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_remove_range" c:identifier="g_array_remove_range">
+      <return-value transfer-ownership="full">
+        <type name="Array" c:type="GArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="Array" c:type="GArray*"/>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_set_size" c:identifier="g_array_set_size">
+      <return-value transfer-ownership="full">
+        <type name="Array" c:type="GArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="Array" c:type="GArray*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_sized_new" c:identifier="g_array_sized_new">
+      <return-value transfer-ownership="full">
+        <type name="Array" c:type="GArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="zero_terminated" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="clear_" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="element_size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="reserved_size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_sort" c:identifier="g_array_sort">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="Array" c:type="GArray*"/>
+        </parameter>
+        <parameter name="compare_func" transfer-ownership="none" scope="call">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="array_sort_with_data"
+              c:identifier="g_array_sort_with_data">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="Array" c:type="GArray*"/>
+        </parameter>
+        <parameter name="compare_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" 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">
+          <type name="Array" c:type="GArray*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_digit_value" c:identifier="g_ascii_digit_value">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="int8" 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="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="buf_len" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="d" transfer-ownership="none">
+          <type name="double" 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="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="buf_len" transfer-ownership="none">
+          <type name="int" 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="double" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_strcasecmp" c:identifier="g_ascii_strcasecmp">
+      <return-value transfer-ownership="none">
+        <type name="int" 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="ssize_t" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_strncasecmp" c:identifier="g_ascii_strncasecmp">
+      <return-value transfer-ownership="none">
+        <type name="int" 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="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_strtod" c:identifier="g_ascii_strtod">
+      <return-value transfer-ownership="none">
+        <type name="double" 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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_strtoll" c:identifier="g_ascii_strtoll">
+      <return-value transfer-ownership="none">
+        <type name="int64" 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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="base" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_strtoull" c:identifier="g_ascii_strtoull">
+      <return-value transfer-ownership="none">
+        <type name="uint64" 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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="base" transfer-ownership="none">
+          <type name="uint" 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="ssize_t" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_tolower" c:identifier="g_ascii_tolower">
+      <return-value transfer-ownership="none">
+        <type name="int8" c:type="gchar"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="int8" c:type="gchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_toupper" c:identifier="g_ascii_toupper">
+      <return-value transfer-ownership="none">
+        <type name="int8" c:type="gchar"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="int8" c:type="gchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ascii_xdigit_value" c:identifier="g_ascii_xdigit_value">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="int8" 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="int" 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="int" 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">
+      <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="int" 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="int8" 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="int" 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="int" 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="int" 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="int" 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_length" c:identifier="g_async_queue_length">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_length_unlocked"
+              c:identifier="g_async_queue_length_unlocked">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_lock" c:identifier="g_async_queue_lock">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_new" c:identifier="g_async_queue_new">
+      <return-value transfer-ownership="full">
+        <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+      </return-value>
+    </function>
+    <function name="async_queue_new_full"
+              c:identifier="g_async_queue_new_full">
+      <return-value transfer-ownership="full">
+        <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="item_free_func"
+                   transfer-ownership="none"
+                   scope="call">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_pop" c:identifier="g_async_queue_pop">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_pop_unlocked"
+              c:identifier="g_async_queue_pop_unlocked">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_push" c:identifier="g_async_queue_push">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_push_sorted"
+              c:identifier="g_async_queue_push_sorted">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_push_sorted_unlocked"
+              c:identifier="g_async_queue_push_sorted_unlocked">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_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="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_ref" c:identifier="g_async_queue_ref">
+      <return-value transfer-ownership="full">
+        <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_ref_unlocked"
+              c:identifier="g_async_queue_ref_unlocked">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_sort" c:identifier="g_async_queue_sort">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_sort_unlocked"
+              c:identifier="g_async_queue_sort_unlocked">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_timed_pop"
+              c:identifier="g_async_queue_timed_pop">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+        <parameter name="end_time" transfer-ownership="none">
+          <type name="TimeVal" c:type="GTimeVal*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_timed_pop_unlocked"
+              c:identifier="g_async_queue_timed_pop_unlocked">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+        <parameter name="end_time" transfer-ownership="none">
+          <type name="TimeVal" c:type="GTimeVal*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_try_pop" c:identifier="g_async_queue_try_pop">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_try_pop_unlocked"
+              c:identifier="g_async_queue_try_pop_unlocked">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_unlock" c:identifier="g_async_queue_unlock">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_unref" c:identifier="g_async_queue_unref">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="async_queue_unref_and_unlock"
+              c:identifier="g_async_queue_unref_and_unlock">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="AsyncQueue" c:type="GAsyncQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atexit" c:identifier="g_atexit">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <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" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="val" transfer-ownership="none">
+          <type name="int" 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="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="atomic" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="oldval" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="newval" transfer-ownership="none">
+          <type name="int" 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="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="atomic" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="val" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atomic_int_get" c:identifier="g_atomic_int_get">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="atomic" direction="out" transfer-ownership="full">
+          <type name="int" 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" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="newval" transfer-ownership="none">
+          <type name="int" 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="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="atomic" transfer-ownership="none">
+          <type name="any" c:type="gpointer*"/>
+        </parameter>
+        <parameter name="oldval" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="newval" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="atomic_pointer_get" c:identifier="g_atomic_pointer_get">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="atomic" transfer-ownership="none">
+          <type name="any" 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="any" c:type="gpointer*"/>
+        </parameter>
+        <parameter name="newval" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="base64_decode" c:identifier="g_base64_decode">
+      <return-value transfer-ownership="full">
+        <array c:type="guchar*">
+          <type name="uint8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="text" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="out_len" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="base64_decode_inplace"
+              c:identifier="g_base64_decode_inplace">
+      <return-value transfer-ownership="full">
+        <array c:type="guchar*">
+          <type name="uint8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="text" transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="out_len" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="base64_decode_step" c:identifier="g_base64_decode_step">
+      <return-value transfer-ownership="none">
+        <type name="size_t" 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="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="out" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="state" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="save" direction="out" transfer-ownership="full">
+          <type name="uint" 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">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="base64_encode_close" c:identifier="g_base64_encode_close">
+      <return-value transfer-ownership="none">
+        <type name="size_t" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="break_lines" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="out" transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="state" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="save" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="base64_encode_step" c:identifier="g_base64_encode_step">
+      <return-value transfer-ownership="none">
+        <type name="size_t" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="in" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="break_lines" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="out" transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="state" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="save" direction="out" transfer-ownership="full">
+          <type name="int" 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" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="lock_bit" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bit_nth_lsf" c:identifier="g_bit_nth_lsf">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="mask" transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="nth_bit" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bit_nth_msf" c:identifier="g_bit_nth_msf">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="mask" transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="nth_bit" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bit_storage" c:identifier="g_bit_storage">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="number" transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bit_trylock" c:identifier="g_bit_trylock">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="address" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="lock_bit" transfer-ownership="none">
+          <type name="int" 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" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="lock_bit" transfer-ownership="none">
+          <type name="int" 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_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="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="bookmark_file_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="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="bookmark_file_free" c:identifier="g_bookmark_file_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_get_added"
+              c:identifier="g_bookmark_file_get_added"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="time_t" c:type="time_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_get_app_info"
+              c:identifier="g_bookmark_file_get_app_info"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="count" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="stamp" direction="out" transfer-ownership="full">
+          <type name="time_t" c:type="time_t*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_get_applications"
+              c:identifier="g_bookmark_file_get_applications"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_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="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_get_groups"
+              c:identifier="g_bookmark_file_get_groups"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_get_icon"
+              c:identifier="g_bookmark_file_get_icon"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="href" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="mime_type" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_get_is_private"
+              c:identifier="g_bookmark_file_get_is_private"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_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="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_get_modified"
+              c:identifier="g_bookmark_file_get_modified"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="time_t" c:type="time_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_get_size"
+              c:identifier="g_bookmark_file_get_size">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_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="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_get_uris"
+              c:identifier="g_bookmark_file_get_uris">
+      <return-value transfer-ownership="full">
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_get_visited"
+              c:identifier="g_bookmark_file_get_visited"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="time_t" c:type="time_t"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_has_application"
+              c:identifier="g_bookmark_file_has_application"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="bookmark_file_has_group"
+              c:identifier="g_bookmark_file_has_group"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="bookmark_file_has_item"
+              c:identifier="g_bookmark_file_has_item">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_load_from_data"
+              c:identifier="g_bookmark_file_load_from_data"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_load_from_data_dirs"
+              c:identifier="g_bookmark_file_load_from_data_dirs"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="full_path" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_load_from_file"
+              c:identifier="g_bookmark_file_load_from_file"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_move_item"
+              c:identifier="g_bookmark_file_move_item"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="bookmark_file_new" c:identifier="g_bookmark_file_new">
+      <return-value transfer-ownership="full">
+        <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+      </return-value>
+    </function>
+    <function name="bookmark_file_remove_application"
+              c:identifier="g_bookmark_file_remove_application"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="bookmark_file_remove_group"
+              c:identifier="g_bookmark_file_remove_group"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="bookmark_file_remove_item"
+              c:identifier="g_bookmark_file_remove_item"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_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="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="added" transfer-ownership="none">
+          <type name="time_t" c:type="time_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_set_app_info"
+              c:identifier="g_bookmark_file_set_app_info"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <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="int" c:type="gint"/>
+        </parameter>
+        <parameter name="stamp" transfer-ownership="none">
+          <type name="time_t" c:type="time_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_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="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="bookmark_file_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="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="groups" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_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="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="bookmark_file_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="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="is_private" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_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="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="bookmark_file_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="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="modified" transfer-ownership="none">
+          <type name="time_t" c:type="time_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_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="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="bookmark_file_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="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="visited" transfer-ownership="none">
+          <type name="time_t" c:type="time_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_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="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bookmark_file_to_file"
+              c:identifier="g_bookmark_file_to_file"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="bookmark" transfer-ownership="none">
+          <type name="BookmarkFile" c:type="GBookmarkFile*"/>
+        </parameter>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="build_filename" c:identifier="g_build_filename">
+      <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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="build_path" c:identifier="g_build_path">
+      <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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_append" c:identifier="g_byte_array_append">
+      <return-value transfer-ownership="full">
+        <type name="ByteArray" c:type="GByteArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="ByteArray" c:type="GByteArray*"/>
+        </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>
+      </parameters>
+    </function>
+    <function name="byte_array_free" c:identifier="g_byte_array_free">
+      <return-value transfer-ownership="full">
+        <array c:type="guint8*">
+          <type name="uint8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="ByteArray" c:type="GByteArray*"/>
+        </parameter>
+        <parameter name="free_segment" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_new" c:identifier="g_byte_array_new">
+      <return-value transfer-ownership="full">
+        <type name="ByteArray" c:type="GByteArray*"/>
+      </return-value>
+    </function>
+    <function name="byte_array_prepend" c:identifier="g_byte_array_prepend">
+      <return-value transfer-ownership="full">
+        <type name="ByteArray" c:type="GByteArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="ByteArray" c:type="GByteArray*"/>
+        </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>
+      </parameters>
+    </function>
+    <function name="byte_array_ref" c:identifier="g_byte_array_ref">
+      <return-value transfer-ownership="full">
+        <type name="ByteArray" c:type="GByteArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="ByteArray" c:type="GByteArray*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_remove_index"
+              c:identifier="g_byte_array_remove_index">
+      <return-value transfer-ownership="full">
+        <type name="ByteArray" c:type="GByteArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="ByteArray" c:type="GByteArray*"/>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_remove_index_fast"
+              c:identifier="g_byte_array_remove_index_fast">
+      <return-value transfer-ownership="full">
+        <type name="ByteArray" c:type="GByteArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="ByteArray" c:type="GByteArray*"/>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_remove_range"
+              c:identifier="g_byte_array_remove_range">
+      <return-value transfer-ownership="full">
+        <type name="ByteArray" c:type="GByteArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="ByteArray" c:type="GByteArray*"/>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_set_size" c:identifier="g_byte_array_set_size">
+      <return-value transfer-ownership="full">
+        <type name="ByteArray" c:type="GByteArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="ByteArray" c:type="GByteArray*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_sized_new"
+              c:identifier="g_byte_array_sized_new">
+      <return-value transfer-ownership="full">
+        <type name="ByteArray" c:type="GByteArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="reserved_size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_sort" c:identifier="g_byte_array_sort">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="ByteArray" c:type="GByteArray*"/>
+        </parameter>
+        <parameter name="compare_func" transfer-ownership="none" scope="call">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="byte_array_sort_with_data"
+              c:identifier="g_byte_array_sort_with_data">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="ByteArray" c:type="GByteArray*"/>
+        </parameter>
+        <parameter name="compare_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" 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">
+          <type name="ByteArray" c:type="GByteArray*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cache_destroy" c:identifier="g_cache_destroy">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cache" transfer-ownership="none">
+          <type name="Cache" c:type="GCache*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cache_insert" c:identifier="g_cache_insert">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="cache" transfer-ownership="none">
+          <type name="Cache" c:type="GCache*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cache_key_foreach" c:identifier="g_cache_key_foreach">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cache" transfer-ownership="none">
+          <type name="Cache" c:type="GCache*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="HFunc" c:type="GHFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cache_new" c:identifier="g_cache_new">
+      <return-value transfer-ownership="full">
+        <type name="Cache" c:type="GCache*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value_new_func"
+                   transfer-ownership="none"
+                   scope="call">
+          <type name="CacheNewFunc" c:type="GCacheNewFunc"/>
+        </parameter>
+        <parameter name="value_destroy_func"
+                   transfer-ownership="none"
+                   scope="call">
+          <type name="CacheDestroyFunc" c:type="GCacheDestroyFunc"/>
+        </parameter>
+        <parameter name="key_dup_func" transfer-ownership="none" scope="call">
+          <type name="CacheDupFunc" c:type="GCacheDupFunc"/>
+        </parameter>
+        <parameter name="key_destroy_func"
+                   transfer-ownership="none"
+                   scope="call">
+          <type name="CacheDestroyFunc" c:type="GCacheDestroyFunc"/>
+        </parameter>
+        <parameter name="hash_key_func" transfer-ownership="none" scope="call">
+          <type name="HashFunc" c:type="GHashFunc"/>
+        </parameter>
+        <parameter name="hash_value_func"
+                   transfer-ownership="none"
+                   scope="call">
+          <type name="HashFunc" c:type="GHashFunc"/>
+        </parameter>
+        <parameter name="key_equal_func"
+                   transfer-ownership="none"
+                   scope="call">
+          <type name="EqualFunc" c:type="GEqualFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cache_remove" c:identifier="g_cache_remove">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cache" transfer-ownership="none">
+          <type name="Cache" c:type="GCache*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cache_value_foreach" c:identifier="g_cache_value_foreach">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cache" transfer-ownership="none">
+          <type name="Cache" c:type="GCache*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="HFunc" c:type="GHFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="chdir" c:identifier="g_chdir">
+      <return-value transfer-ownership="none">
+        <type name="int" 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="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="required_minor" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="required_micro" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="checksum_copy" c:identifier="g_checksum_copy">
+      <return-value transfer-ownership="full">
+        <type name="Checksum" c:type="GChecksum*"/>
+      </return-value>
+      <parameters>
+        <parameter name="checksum" transfer-ownership="none">
+          <type name="Checksum" c:type="GChecksum*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="checksum_free" c:identifier="g_checksum_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="checksum" transfer-ownership="none">
+          <type name="Checksum" c:type="GChecksum*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="checksum_get_digest" c:identifier="g_checksum_get_digest">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="checksum" transfer-ownership="none">
+          <type name="Checksum" c:type="GChecksum*"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="digest_len" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="checksum_get_string" c:identifier="g_checksum_get_string">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="checksum" transfer-ownership="none">
+          <type name="Checksum" c:type="GChecksum*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="checksum_new" c:identifier="g_checksum_new">
+      <return-value transfer-ownership="full">
+        <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_reset" c:identifier="g_checksum_reset">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="checksum" transfer-ownership="none">
+          <type name="Checksum" c:type="GChecksum*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="checksum_type_get_length"
+              c:identifier="g_checksum_type_get_length">
+      <return-value transfer-ownership="none">
+        <type name="ssize_t" c:type="gssize"/>
+      </return-value>
+      <parameters>
+        <parameter name="checksum_type" transfer-ownership="none">
+          <type name="ChecksumType" c:type="GChecksumType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="checksum_update" c:identifier="g_checksum_update">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="checksum" transfer-ownership="none">
+          <type name="Checksum" c:type="GChecksum*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_watch_add" c:identifier="g_child_watch_add_full">
+      <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="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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="call">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="child_watch_source_new"
+              c:identifier="g_child_watch_source_new">
+      <return-value transfer-ownership="full">
+        <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_add_items"
+              c:identifier="g_completion_add_items">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cmp" transfer-ownership="none">
+          <type name="Completion" c:type="GCompletion*"/>
+        </parameter>
+        <parameter name="items" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="completion_clear_items"
+              c:identifier="g_completion_clear_items">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cmp" transfer-ownership="none">
+          <type name="Completion" c:type="GCompletion*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="completion_complete" c:identifier="g_completion_complete">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="cmp" transfer-ownership="none">
+          <type name="Completion" c:type="GCompletion*"/>
+        </parameter>
+        <parameter name="prefix" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="new_prefix" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="completion_complete_utf8"
+              c:identifier="g_completion_complete_utf8">
+      <return-value transfer-ownership="none">
+        <type name="List" c:type="GList*">
+          <type name="utf8"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="cmp" transfer-ownership="none">
+          <type name="Completion" c:type="GCompletion*"/>
+        </parameter>
+        <parameter name="prefix" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="new_prefix" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="completion_free" c:identifier="g_completion_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cmp" transfer-ownership="none">
+          <type name="Completion" c:type="GCompletion*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="completion_new" c:identifier="g_completion_new">
+      <return-value transfer-ownership="full">
+        <type name="Completion" c:type="GCompletion*"/>
+      </return-value>
+      <parameters>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="CompletionFunc" c:type="GCompletionFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="completion_remove_items"
+              c:identifier="g_completion_remove_items">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cmp" transfer-ownership="none">
+          <type name="Completion" c:type="GCompletion*"/>
+        </parameter>
+        <parameter name="items" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="completion_set_compare"
+              c:identifier="g_completion_set_compare">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cmp" transfer-ownership="none">
+          <type name="Completion" c:type="GCompletion*"/>
+        </parameter>
+        <parameter name="strncmp_func" transfer-ownership="none" scope="call">
+          <type name="CompletionStrncmpFunc" c:type="GCompletionStrncmpFunc"/>
+        </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">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="size_t" 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="ssize_t" 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="ssize_t" 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" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+        <parameter name="bytes_written"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </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="ssize_t" 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" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+        <parameter name="bytes_written"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="size_t" 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="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="converter" transfer-ownership="none">
+          <type name="IConv" c:type="GIConv"/>
+        </parameter>
+        <parameter name="bytes_read" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+        <parameter name="bytes_written"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="size_t" 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">
+      <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"
+                   scope="call"
+                   closure="2">
+          <type name="DataForeachFunc" c:type="GDataForeachFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="datalist_get_flags" c:identifier="g_datalist_get_flags">
+      <return-value transfer-ownership="none">
+        <type name="uint" 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">
+      <return-value transfer-ownership="none">
+        <type name="any" 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">
+      <return-value transfer-ownership="none">
+        <type name="any" 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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy_func" transfer-ownership="none" scope="call">
+          <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="uint" 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="uint" 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="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dataset_foreach" c:identifier="g_dataset_foreach">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dataset_location" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="DataForeachFunc" c:type="GDataForeachFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dataset_id_get_data" c:identifier="g_dataset_id_get_data">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="dataset_location" transfer-ownership="none">
+          <type name="any" 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">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="dataset_location" transfer-ownership="none">
+          <type name="any" 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="any" 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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy_func" transfer-ownership="none" scope="call">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_add_days" c:identifier="g_date_add_days">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="n_days" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_add_months" c:identifier="g_date_add_months">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="n_months" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_add_years" c:identifier="g_date_add_years">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="n_years" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_clamp" c:identifier="g_date_clamp">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="date_clear" c:identifier="g_date_clear">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="n_dates" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_compare" c:identifier="g_date_compare">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="lhs" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="rhs" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_days_between" c:identifier="g_date_days_between">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="date1" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="date2" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_free" c:identifier="g_date_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_get_day" c:identifier="g_date_get_day">
+      <return-value transfer-ownership="full">
+        <type name="DateDay" c:type="GDateDay"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_get_day_of_year"
+              c:identifier="g_date_get_day_of_year">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </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="uint8" 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_iso8601_week_of_year"
+              c:identifier="g_date_get_iso8601_week_of_year">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_get_julian" c:identifier="g_date_get_julian">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_get_monday_week_of_year"
+              c:identifier="g_date_get_monday_week_of_year">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </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="uint8" 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_month" c:identifier="g_date_get_month">
+      <return-value transfer-ownership="full">
+        <type name="DateMonth" c:type="GDateMonth"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_get_sunday_week_of_year"
+              c:identifier="g_date_get_sunday_week_of_year">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </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="uint8" 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_weekday" c:identifier="g_date_get_weekday">
+      <return-value transfer-ownership="full">
+        <type name="DateWeekday" c:type="GDateWeekday"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_get_year" c:identifier="g_date_get_year">
+      <return-value transfer-ownership="full">
+        <type name="DateYear" c:type="GDateYear"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_is_first_of_month"
+              c:identifier="g_date_is_first_of_month">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_is_last_of_month"
+              c:identifier="g_date_is_last_of_month">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_is_leap_year" c:identifier="g_date_is_leap_year">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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">
+      <return-value transfer-ownership="full">
+        <type name="Date" c:type="GDate*"/>
+      </return-value>
+    </function>
+    <function name="date_new_dmy" c:identifier="g_date_new_dmy">
+      <return-value transfer-ownership="full">
+        <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">
+      <return-value transfer-ownership="full">
+        <type name="Date" c:type="GDate*"/>
+      </return-value>
+      <parameters>
+        <parameter name="julian_day" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_order" c:identifier="g_date_order">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="date1" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="date2" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_set_day" c:identifier="g_date_set_day">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="day" transfer-ownership="none">
+          <type name="DateDay" c:type="GDateDay"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_set_dmy" c:identifier="g_date_set_dmy">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="date_set_julian" c:identifier="g_date_set_julian">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="julian_date" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_set_month" c:identifier="g_date_set_month">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="month" transfer-ownership="none">
+          <type name="DateMonth" c:type="GDateMonth"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_set_parse" c:identifier="g_date_set_parse">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_set_time" c:identifier="g_date_set_time">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="Time" c:type="GTime"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_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="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="timet" transfer-ownership="none">
+          <type name="time_t" c:type="time_t"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_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="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="timeval" transfer-ownership="none">
+          <type name="TimeVal" c:type="GTimeVal*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_set_year" c:identifier="g_date_set_year">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="year" transfer-ownership="none">
+          <type name="DateYear" c:type="GDateYear"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_strftime" c:identifier="g_date_strftime">
+      <return-value transfer-ownership="none">
+        <type name="size_t" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="s" transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="slen" transfer-ownership="none">
+          <type name="size_t" 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_subtract_days" c:identifier="g_date_subtract_days">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="n_days" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_subtract_months"
+              c:identifier="g_date_subtract_months">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="n_months" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_subtract_years" c:identifier="g_date_subtract_years">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="n_years" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_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="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+        <parameter name="tm" transfer-ownership="none">
+          <type name="any" c:type="any*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_valid" c:identifier="g_date_valid">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="date" transfer-ownership="none">
+          <type name="Date" c:type="GDate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_valid_day" c:identifier="g_date_valid_day">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="boolean" 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="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="julian_date" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="date_valid_month" c:identifier="g_date_valid_month">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="boolean" 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="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="year" transfer-ownership="none">
+          <type name="DateYear" c:type="GDateYear"/>
+        </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_close" c:identifier="g_dir_close">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dir" transfer-ownership="none">
+          <type name="Dir" c:type="GDir*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dir_open" c:identifier="g_dir_open" throws="1">
+      <return-value transfer-ownership="full">
+        <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="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dir_read_name" c:identifier="g_dir_read_name">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="dir" transfer-ownership="none">
+          <type name="Dir" c:type="GDir*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="dir_rewind" c:identifier="g_dir_rewind">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="dir" transfer-ownership="none">
+          <type name="Dir" c:type="GDir*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="direct_equal" c:identifier="g_direct_equal">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="direct_hash" c:identifier="g_direct_hash">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="any" 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="ulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="double_equal" c:identifier="g_double_equal">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="double_hash" c:identifier="g_double_hash">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="any" 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="size_t" 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_copy" c:identifier="g_error_copy">
+      <return-value transfer-ownership="full">
+        <type name="Error" c:type="GError*"/>
+      </return-value>
+      <parameters>
+        <parameter name="error" transfer-ownership="none">
+          <type name="Error" c:type="GError*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="error_free" c:identifier="g_error_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="error" transfer-ownership="none">
+          <type name="Error" c:type="GError*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="error_matches" c:identifier="g_error_matches">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="error" 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="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="error_new" c:identifier="g_error_new">
+      <return-value transfer-ownership="full">
+        <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="int" 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">
+      <return-value transfer-ownership="full">
+        <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="int" c:type="gint"/>
+        </parameter>
+        <parameter name="message" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="file_error_from_errno"
+              c:identifier="g_file_error_from_errno">
+      <return-value transfer-ownership="full">
+        <type name="FileError" c:type="GFileError"/>
+      </return-value>
+      <parameters>
+        <parameter name="err_no" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="file_get_contents"
+              c:identifier="g_file_get_contents"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="contents" direction="out" transfer-ownership="full">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="length"
+                   direction="out"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <type name="size_t" 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="int" 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" 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="boolean" 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">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="file_test" c:identifier="g_file_test">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </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="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="bytes_read" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+        <parameter name="bytes_written"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="size_t" 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="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="bytes_read" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+        <parameter name="bytes_written"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="size_t" 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="offset" c:type="goffset"/>
+        </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="any" 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="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="charset" transfer-ownership="none">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </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="boolean" 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="full">
+        <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="HashTable" c:type="GHashTable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_find" c:identifier="g_hash_table_find">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="HashTable" c:type="GHashTable*"/>
+        </parameter>
+        <parameter name="predicate"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="HRFunc" c:type="GHRFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_foreach" c:identifier="g_hash_table_foreach">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="HashTable" c:type="GHashTable*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="HFunc" c:type="GHFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_foreach_remove"
+              c:identifier="g_hash_table_foreach_remove">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="HashTable" c:type="GHashTable*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="HRFunc" c:type="GHRFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_foreach_steal"
+              c:identifier="g_hash_table_foreach_steal">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="HashTable" c:type="GHashTable*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="HRFunc" c:type="GHRFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_get_keys" c:identifier="g_hash_table_get_keys">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="HashTable" c:type="GHashTable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_get_values"
+              c:identifier="g_hash_table_get_values">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="HashTable" c:type="GHashTable*"/>
+        </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="HashTable" c:type="GHashTable*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_iter_get_hash_table"
+              c:identifier="g_hash_table_iter_get_hash_table">
+      <return-value transfer-ownership="full">
+        <type name="HashTable" c:type="GHashTable*"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="HashTableIter" c:type="GHashTableIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_iter_init"
+              c:identifier="g_hash_table_iter_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="HashTableIter" c:type="GHashTableIter*"/>
+        </parameter>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="HashTable" c:type="GHashTable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_iter_next"
+              c:identifier="g_hash_table_iter_next">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="HashTableIter" c:type="GHashTableIter*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" c:type="gpointer*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="any" c:type="gpointer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_iter_remove"
+              c:identifier="g_hash_table_iter_remove">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="HashTableIter" c:type="GHashTableIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_iter_steal"
+              c:identifier="g_hash_table_iter_steal">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="HashTableIter" c:type="GHashTableIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_lookup" c:identifier="g_hash_table_lookup">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="HashTable" c:type="GHashTable*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" 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="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="HashTable" c:type="GHashTable*"/>
+        </parameter>
+        <parameter name="lookup_key" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="orig_key" transfer-ownership="none">
+          <type name="any" c:type="gpointer*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="any" c:type="gpointer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_new" c:identifier="g_hash_table_new">
+      <return-value transfer-ownership="full">
+        <type name="HashTable" c:type="GHashTable*"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_func" transfer-ownership="none" scope="call">
+          <type name="HashFunc" c:type="GHashFunc"/>
+        </parameter>
+        <parameter name="key_equal_func"
+                   transfer-ownership="none"
+                   scope="call">
+          <type name="EqualFunc" c:type="GEqualFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_new_full" c:identifier="g_hash_table_new_full">
+      <return-value transfer-ownership="full">
+        <type name="HashTable" c:type="GHashTable*"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_func" transfer-ownership="none" scope="call">
+          <type name="HashFunc" c:type="GHashFunc"/>
+        </parameter>
+        <parameter name="key_equal_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   destroy="2">
+          <type name="EqualFunc" c:type="GEqualFunc"/>
+        </parameter>
+        <parameter name="key_destroy_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   destroy="3">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+        <parameter name="value_destroy_func"
+                   transfer-ownership="none"
+                   scope="call">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_ref" c:identifier="g_hash_table_ref">
+      <return-value transfer-ownership="full">
+        <type name="HashTable" c:type="GHashTable*"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="HashTable" c:type="GHashTable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_remove" c:identifier="g_hash_table_remove">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="HashTable" c:type="GHashTable*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" 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="HashTable" c:type="GHashTable*"/>
+        </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="HashTable" c:type="GHashTable*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_size" c:identifier="g_hash_table_size">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="HashTable" c:type="GHashTable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hash_table_steal" c:identifier="g_hash_table_steal">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="hash_table" transfer-ownership="none">
+          <type name="HashTable" c:type="GHashTable*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" 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="HashTable" c:type="GHashTable*"/>
+        </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="HashTable" c:type="GHashTable*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_alloc" c:identifier="g_hook_alloc">
+      <return-value transfer-ownership="full">
+        <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_compare_ids" c:identifier="g_hook_compare_ids">
+      <return-value transfer-ownership="none">
+        <type name="int" 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>
+    </function>
+    <function name="hook_destroy" c:identifier="g_hook_destroy">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="ulong" 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">
+      <return-value transfer-ownership="full">
+        <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="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="HookFindFunc" c:type="GHookFindFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_find_data" c:identifier="g_hook_find_data">
+      <return-value transfer-ownership="full">
+        <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="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_find_func" c:identifier="g_hook_find_func">
+      <return-value transfer-ownership="full">
+        <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="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_find_func_data" c:identifier="g_hook_find_func_data">
+      <return-value transfer-ownership="full">
+        <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="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_first_valid" c:identifier="g_hook_first_valid">
+      <return-value transfer-ownership="full">
+        <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="boolean" 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">
+      <return-value transfer-ownership="full">
+        <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="ulong" 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">
+      <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" scope="call">
+          <type name="HookCompareFunc" c:type="GHookCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_list_clear" c:identifier="g_hook_list_clear">
+      <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>
+      </parameters>
+    </function>
+    <function name="hook_list_init" c:identifier="g_hook_list_init">
+      <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_size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_list_invoke" c:identifier="g_hook_list_invoke">
+      <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="may_recurse" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_list_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="hook_list" transfer-ownership="none">
+          <type name="HookList" c:type="GHookList*"/>
+        </parameter>
+        <parameter name="may_recurse" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_list_marshal" c:identifier="g_hook_list_marshal">
+      <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="may_recurse" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="marshaller"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="HookMarshaller" c:type="GHookMarshaller"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_list_marshal_check"
+              c:identifier="g_hook_list_marshal_check">
+      <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="may_recurse" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="marshaller"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="HookCheckMarshaller" c:type="GHookCheckMarshaller"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="hook_next_valid" c:identifier="g_hook_next_valid">
+      <return-value transfer-ownership="full">
+        <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="boolean" 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">
+      <return-value transfer-ownership="full">
+        <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="boolean" 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="boolean" 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="boolean" 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="size_t" 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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="inbytes_left"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+        <parameter name="outbuf" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="outbytes_left"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="iconv_close" c:identifier="g_iconv_close">
+      <return-value transfer-ownership="none">
+        <type name="int" 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">
+      <return-value transfer-ownership="full">
+        <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_full">
+      <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="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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="call">
+          <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="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="idle_source_new" c:identifier="g_idle_source_new">
+      <return-value transfer-ownership="full">
+        <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="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="int64_hash" c:identifier="g_int64_hash">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="int_equal" c:identifier="g_int_equal">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="int_hash" c:identifier="g_int_hash">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="any" 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_full">
+      <return-value transfer-ownership="none">
+        <type name="uint" 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="int" 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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="call">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_close" c:identifier="g_io_channel_close">
+      <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>
+    </function>
+    <function name="io_channel_error_from_errno"
+              c:identifier="g_io_channel_error_from_errno">
+      <return-value transfer-ownership="full">
+        <type name="IOChannelError" c:type="GIOChannelError"/>
+      </return-value>
+      <parameters>
+        <parameter name="en" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_flush"
+              c:identifier="g_io_channel_flush"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="IOStatus" c:type="GIOStatus"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_get_buffer_condition"
+              c:identifier="g_io_channel_get_buffer_condition">
+      <return-value transfer-ownership="full">
+        <type name="IOCondition" c:type="GIOCondition"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_get_buffer_size"
+              c:identifier="g_io_channel_get_buffer_size">
+      <return-value transfer-ownership="none">
+        <type name="size_t" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_get_buffered"
+              c:identifier="g_io_channel_get_buffered">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_get_close_on_unref"
+              c:identifier="g_io_channel_get_close_on_unref">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_get_encoding"
+              c:identifier="g_io_channel_get_encoding">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_get_flags"
+              c:identifier="g_io_channel_get_flags">
+      <return-value transfer-ownership="full">
+        <type name="IOFlags" c:type="GIOFlags"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_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="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_init" c:identifier="g_io_channel_init">
+      <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>
+    </function>
+    <function name="io_channel_new_file"
+              c:identifier="g_io_channel_new_file"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <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_read" c:identifier="g_io_channel_read">
+      <return-value transfer-ownership="full">
+        <type name="IOError" c:type="GIOError"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+        <parameter name="buf" transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="bytes_read" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_read_chars"
+              c:identifier="g_io_channel_read_chars"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <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="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="count" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="bytes_read" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_read_line"
+              c:identifier="g_io_channel_read_line"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="IOStatus" c:type="GIOStatus"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+        <parameter name="str_return" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+        <parameter name="terminator_pos"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_read_line_string"
+              c:identifier="g_io_channel_read_line_string"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="IOStatus" c:type="GIOStatus"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="terminator_pos"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_read_to_end"
+              c:identifier="g_io_channel_read_to_end"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="IOStatus" c:type="GIOStatus"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+        <parameter name="str_return" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_read_unichar"
+              c:identifier="g_io_channel_read_unichar"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="IOStatus" c:type="GIOStatus"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+        <parameter name="thechar" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_ref" c:identifier="g_io_channel_ref">
+      <return-value transfer-ownership="full">
+        <type name="IOChannel" c:type="GIOChannel*"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_seek" c:identifier="g_io_channel_seek">
+      <return-value transfer-ownership="full">
+        <type name="IOError" c:type="GIOError"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+        <parameter name="offset" transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="SeekType" c:type="GSeekType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_seek_position"
+              c:identifier="g_io_channel_seek_position"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <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="int64" c:type="gint64"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="SeekType" c:type="GSeekType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_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="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_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="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+        <parameter name="buffered" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_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="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+        <parameter name="do_close" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_set_encoding"
+              c:identifier="g_io_channel_set_encoding"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="IOStatus" c:type="GIOStatus"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+        <parameter name="encoding" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_set_flags"
+              c:identifier="g_io_channel_set_flags"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <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>
+    </function>
+    <function name="io_channel_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="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+        <parameter name="line_term" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_shutdown"
+              c:identifier="g_io_channel_shutdown"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="IOStatus" c:type="GIOStatus"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+        <parameter name="flush" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_unix_get_fd"
+              c:identifier="g_io_channel_unix_get_fd">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_unix_new" c:identifier="g_io_channel_unix_new">
+      <return-value transfer-ownership="full">
+        <type name="IOChannel" c:type="GIOChannel*"/>
+      </return-value>
+      <parameters>
+        <parameter name="fd" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_unref" c:identifier="g_io_channel_unref">
+      <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>
+    </function>
+    <function name="io_channel_write" c:identifier="g_io_channel_write">
+      <return-value transfer-ownership="full">
+        <type name="IOError" c:type="GIOError"/>
+      </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="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="bytes_written"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_write_chars"
+              c:identifier="g_io_channel_write_chars"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <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="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="bytes_written"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_channel_write_unichar"
+              c:identifier="g_io_channel_write_unichar"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="IOStatus" c:type="GIOStatus"/>
+      </return-value>
+      <parameters>
+        <parameter name="channel" transfer-ownership="none">
+          <type name="IOChannel" c:type="GIOChannel*"/>
+        </parameter>
+        <parameter name="thechar" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="io_create_watch" c:identifier="g_io_create_watch">
+      <return-value transfer-ownership="full">
+        <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_free" c:identifier="g_key_file_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_get_boolean"
+              c:identifier="g_key_file_get_boolean"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="key_file_get_boolean_list"
+              c:identifier="g_key_file_get_boolean_list"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="boolean" c:type="gboolean*"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_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="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="key_file_get_double"
+              c:identifier="g_key_file_get_double"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="key_file_get_double_list"
+              c:identifier="g_key_file_get_double_list"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="double" c:type="gdouble*"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_get_groups" c:identifier="g_key_file_get_groups">
+      <return-value transfer-ownership="full">
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_get_integer"
+              c:identifier="g_key_file_get_integer"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="key_file_get_integer_list"
+              c:identifier="g_key_file_get_integer_list"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="int" c:type="gint*"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_get_keys"
+              c:identifier="g_key_file_get_keys"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <parameter name="group_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_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="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="key_file_get_locale_string_list"
+              c:identifier="g_key_file_get_locale_string_list"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <array length="4" c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_get_start_group"
+              c:identifier="g_key_file_get_start_group">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_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="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="key_file_get_string_list"
+              c:identifier="g_key_file_get_string_list"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <array length="3" c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_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="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="key_file_has_group" c:identifier="g_key_file_has_group">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <parameter name="group_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_has_key"
+              c:identifier="g_key_file_has_key"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="key_file_load_from_data"
+              c:identifier="g_key_file_load_from_data"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="KeyFileFlags" c:type="GKeyFileFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_load_from_data_dirs"
+              c:identifier="g_key_file_load_from_data_dirs"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="full_path" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="KeyFileFlags" c:type="GKeyFileFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_load_from_dirs"
+              c:identifier="g_key_file_load_from_dirs"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <parameter name="file" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="search_dirs" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="full_path" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="KeyFileFlags" c:type="GKeyFileFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_load_from_file"
+              c:identifier="g_key_file_load_from_file"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="key_file_new" c:identifier="g_key_file_new">
+      <return-value transfer-ownership="full">
+        <type name="KeyFile" c:type="GKeyFile*"/>
+      </return-value>
+    </function>
+    <function name="key_file_remove_comment"
+              c:identifier="g_key_file_remove_comment"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="key_file_remove_group"
+              c:identifier="g_key_file_remove_group"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <parameter name="group_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_remove_key"
+              c:identifier="g_key_file_remove_key"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="key_file_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="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_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="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_set_comment"
+              c:identifier="g_key_file_set_comment"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="key_file_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="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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="double" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_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="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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="double" c:type="gdouble"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_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="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_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="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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="int" c:type="gint"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_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="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <parameter name="separator" transfer-ownership="none">
+          <type name="int8" c:type="gchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_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="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="key_file_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="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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="5" c:type="gchar*">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_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="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="key_file_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="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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="4" c:type="gchar*">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_file_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="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="key_file_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="key_file" transfer-ownership="none">
+          <type name="KeyFile" c:type="GKeyFile*"/>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_alloc" c:identifier="g_list_alloc">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+    </function>
+    <function name="list_append" c:identifier="g_list_append">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_concat" c:identifier="g_list_concat">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list1" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="list2" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_copy" c:identifier="g_list_copy">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_delete_link" c:identifier="g_list_delete_link">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="link_" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_find" c:identifier="g_list_find">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_find_custom" c:identifier="g_list_find_custom">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_first" c:identifier="g_list_first">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_foreach" c:identifier="g_list_foreach">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="Func" c:type="GFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" 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="List" c:type="GList*"/>
+        </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="List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_index" c:identifier="g_list_index">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_insert" c:identifier="g_list_insert">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="position" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_insert_before" c:identifier="g_list_insert_before">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="sibling" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_insert_sorted" c:identifier="g_list_insert_sorted">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_insert_sorted_with_data"
+              c:identifier="g_list_insert_sorted_with_data">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_last" c:identifier="g_list_last">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_length" c:identifier="g_list_length">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_nth" c:identifier="g_list_nth">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_nth_data" c:identifier="g_list_nth_data">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_nth_prev" c:identifier="g_list_nth_prev">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="uint" 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="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="llink" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_prepend" c:identifier="g_list_prepend">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_remove" c:identifier="g_list_remove">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_remove_all" c:identifier="g_list_remove_all">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_remove_link" c:identifier="g_list_remove_link">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="llink" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_reverse" c:identifier="g_list_reverse">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_sort" c:identifier="g_list_sort">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="compare_func" transfer-ownership="none" scope="call">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="list_sort_with_data" c:identifier="g_list_sort_with_data">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="compare_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="listenv" c:identifier="g_listenv">
+      <return-value transfer-ownership="full">
+        <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="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="bytes_read" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+        <parameter name="bytes_written"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="size_t" 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="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="bytes_read" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+        <parameter name="bytes_written"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="log" c:identifier="g_log">
+      <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="any" 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="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="log_set_always_fatal"
+              c:identifier="g_log_set_always_fatal">
+      <return-value transfer-ownership="full">
+        <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">
+      <return-value transfer-ownership="full">
+        <type name="LogFunc" c:type="GLogFunc"/>
+      </return-value>
+      <parameters>
+        <parameter name="log_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="1">
+          <type name="LogFunc" c:type="GLogFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="log_set_fatal_mask" c:identifier="g_log_set_fatal_mask">
+      <return-value transfer-ownership="full">
+        <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">
+      <return-value transfer-ownership="none">
+        <type name="uint" 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"
+                   scope="call"
+                   closure="3">
+          <type name="LogFunc" c:type="GLogFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_acquire"
+              c:identifier="g_main_context_acquire">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_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="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+        <parameter name="fd" transfer-ownership="none">
+          <type name="PollFD" c:type="GPollFD*"/>
+        </parameter>
+        <parameter name="priority" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_check" c:identifier="g_main_context_check">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+        <parameter name="max_priority" transfer-ownership="none">
+          <type name="int" 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="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_default"
+              c:identifier="g_main_context_default">
+      <return-value transfer-ownership="full">
+        <type name="MainContext" c:type="GMainContext*"/>
+      </return-value>
+    </function>
+    <function name="main_context_dispatch"
+              c:identifier="g_main_context_dispatch">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_find_source_by_funcs_user_data"
+              c:identifier="g_main_context_find_source_by_funcs_user_data">
+      <return-value transfer-ownership="full">
+        <type name="Source" c:type="GSource*"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+        <parameter name="funcs" transfer-ownership="none">
+          <type name="SourceFuncs" c:type="GSourceFuncs*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_find_source_by_id"
+              c:identifier="g_main_context_find_source_by_id">
+      <return-value transfer-ownership="full">
+        <type name="Source" c:type="GSource*"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+        <parameter name="source_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_find_source_by_user_data"
+              c:identifier="g_main_context_find_source_by_user_data">
+      <return-value transfer-ownership="full">
+        <type name="Source" c:type="GSource*"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_get_poll_func"
+              c:identifier="g_main_context_get_poll_func">
+      <return-value transfer-ownership="full">
+        <type name="PollFunc" c:type="GPollFunc"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_get_thread_default"
+              c:identifier="g_main_context_get_thread_default">
+      <return-value transfer-ownership="full">
+        <type name="MainContext" c:type="GMainContext*"/>
+      </return-value>
+    </function>
+    <function name="main_context_is_owner"
+              c:identifier="g_main_context_is_owner">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_iteration"
+              c:identifier="g_main_context_iteration">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+        <parameter name="may_block" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_new" c:identifier="g_main_context_new">
+      <return-value transfer-ownership="full">
+        <type name="MainContext" c:type="GMainContext*"/>
+      </return-value>
+    </function>
+    <function name="main_context_pending"
+              c:identifier="g_main_context_pending">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_pop_thread_default"
+              c:identifier="g_main_context_pop_thread_default">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_prepare"
+              c:identifier="g_main_context_prepare">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+        <parameter name="priority" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_push_thread_default"
+              c:identifier="g_main_context_push_thread_default">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_query" c:identifier="g_main_context_query">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+        <parameter name="max_priority" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="timeout_" direction="out" transfer-ownership="full">
+          <type name="int" 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="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_ref" c:identifier="g_main_context_ref">
+      <return-value transfer-ownership="full">
+        <type name="MainContext" c:type="GMainContext*"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_release"
+              c:identifier="g_main_context_release">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_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="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+        <parameter name="fd" transfer-ownership="none">
+          <type name="PollFD" c:type="GPollFD*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_set_poll_func"
+              c:identifier="g_main_context_set_poll_func">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="PollFunc" c:type="GPollFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_unref" c:identifier="g_main_context_unref">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_context_wait" c:identifier="g_main_context_wait">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="main_context_wakeup" c:identifier="g_main_context_wakeup">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_current_source" c:identifier="g_main_current_source">
+      <return-value transfer-ownership="full">
+        <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="int" c:type="gint"/>
+      </return-value>
+    </function>
+    <function name="main_loop_get_context"
+              c:identifier="g_main_loop_get_context">
+      <return-value transfer-ownership="full">
+        <type name="MainContext" c:type="GMainContext*"/>
+      </return-value>
+      <parameters>
+        <parameter name="loop" transfer-ownership="none">
+          <type name="MainLoop" c:type="GMainLoop*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_loop_is_running"
+              c:identifier="g_main_loop_is_running">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="loop" transfer-ownership="none">
+          <type name="MainLoop" c:type="GMainLoop*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_loop_new" c:identifier="g_main_loop_new">
+      <return-value transfer-ownership="full">
+        <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="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_loop_quit" c:identifier="g_main_loop_quit">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="loop" transfer-ownership="none">
+          <type name="MainLoop" c:type="GMainLoop*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_loop_ref" c:identifier="g_main_loop_ref">
+      <return-value transfer-ownership="full">
+        <type name="MainLoop" c:type="GMainLoop*"/>
+      </return-value>
+      <parameters>
+        <parameter name="loop" transfer-ownership="none">
+          <type name="MainLoop" c:type="GMainLoop*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_loop_run" c:identifier="g_main_loop_run">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="loop" transfer-ownership="none">
+          <type name="MainLoop" c:type="GMainLoop*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_loop_unref" c:identifier="g_main_loop_unref">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="loop" transfer-ownership="none">
+          <type name="MainLoop" c:type="GMainLoop*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="malloc" c:identifier="g_malloc">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_bytes" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="malloc0" c:identifier="g_malloc0">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_bytes" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="malloc0_n" c:identifier="g_malloc0_n">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_blocks" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="n_block_bytes" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="malloc_n" c:identifier="g_malloc_n">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_blocks" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="n_block_bytes" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mapped_file_free" c:identifier="g_mapped_file_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="file" transfer-ownership="none">
+          <type name="MappedFile" c:type="GMappedFile*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mapped_file_get_contents"
+              c:identifier="g_mapped_file_get_contents">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="file" transfer-ownership="none">
+          <type name="MappedFile" c:type="GMappedFile*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mapped_file_get_length"
+              c:identifier="g_mapped_file_get_length">
+      <return-value transfer-ownership="none">
+        <type name="size_t" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="file" transfer-ownership="none">
+          <type name="MappedFile" c:type="GMappedFile*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mapped_file_new"
+              c:identifier="g_mapped_file_new"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <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="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mapped_file_ref" c:identifier="g_mapped_file_ref">
+      <return-value transfer-ownership="full">
+        <type name="MappedFile" c:type="GMappedFile*"/>
+      </return-value>
+      <parameters>
+        <parameter name="file" transfer-ownership="none">
+          <type name="MappedFile" c:type="GMappedFile*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mapped_file_unref" c:identifier="g_mapped_file_unref">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="file" transfer-ownership="none">
+          <type name="MappedFile" c:type="GMappedFile*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="markup_collect_attributes"
+              c:identifier="g_markup_collect_attributes">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="attribute_values" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </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_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="ssize_t" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="markup_parse_context_end_parse"
+              c:identifier="g_markup_parse_context_end_parse"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MarkupParseContext" c:type="GMarkupParseContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="markup_parse_context_free"
+              c:identifier="g_markup_parse_context_free">
+      <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>
+      </parameters>
+    </function>
+    <function name="markup_parse_context_get_element"
+              c:identifier="g_markup_parse_context_get_element">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MarkupParseContext" c:type="GMarkupParseContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="markup_parse_context_get_element_stack"
+              c:identifier="g_markup_parse_context_get_element_stack">
+      <return-value transfer-ownership="none">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MarkupParseContext" c:type="GMarkupParseContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="markup_parse_context_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="context" transfer-ownership="none">
+          <type name="MarkupParseContext" c:type="GMarkupParseContext*"/>
+        </parameter>
+        <parameter name="line_number"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="char_number"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="markup_parse_context_get_user_data"
+              c:identifier="g_markup_parse_context_get_user_data">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MarkupParseContext" c:type="GMarkupParseContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="markup_parse_context_new"
+              c:identifier="g_markup_parse_context_new">
+      <return-value transfer-ownership="full">
+        <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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="user_data_dnotify"
+                   transfer-ownership="none"
+                   scope="call">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="markup_parse_context_parse"
+              c:identifier="g_markup_parse_context_parse"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </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="ssize_t" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="markup_parse_context_pop"
+              c:identifier="g_markup_parse_context_pop">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MarkupParseContext" c:type="GMarkupParseContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="markup_parse_context_push"
+              c:identifier="g_markup_parse_context_push">
+      <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="parser" transfer-ownership="none">
+          <type name="MarkupParser" c:type="GMarkupParser*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="markup_printf_escaped"
+              c:identifier="g_markup_printf_escaped">
+      <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="match_info_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="match_info" transfer-ownership="none">
+          <type name="MatchInfo" c:type="GMatchInfo*"/>
+        </parameter>
+        <parameter name="string_to_expand" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="match_info_fetch" c:identifier="g_match_info_fetch">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="match_info" transfer-ownership="none">
+          <type name="MatchInfo" c:type="GMatchInfo*"/>
+        </parameter>
+        <parameter name="match_num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="match_info_fetch_all"
+              c:identifier="g_match_info_fetch_all">
+      <return-value transfer-ownership="full">
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="match_info" transfer-ownership="none">
+          <type name="MatchInfo" c:type="GMatchInfo*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="match_info_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="match_info" transfer-ownership="none">
+          <type name="MatchInfo" c:type="GMatchInfo*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="match_info_fetch_named_pos"
+              c:identifier="g_match_info_fetch_named_pos">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="match_info" transfer-ownership="none">
+          <type name="MatchInfo" c:type="GMatchInfo*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="start_pos" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="end_pos" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="match_info_fetch_pos"
+              c:identifier="g_match_info_fetch_pos">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="match_info" transfer-ownership="none">
+          <type name="MatchInfo" c:type="GMatchInfo*"/>
+        </parameter>
+        <parameter name="match_num" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="start_pos" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="end_pos" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="match_info_free" c:identifier="g_match_info_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="match_info" transfer-ownership="none">
+          <type name="MatchInfo" c:type="GMatchInfo*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="match_info_get_match_count"
+              c:identifier="g_match_info_get_match_count">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="match_info" transfer-ownership="none">
+          <type name="MatchInfo" c:type="GMatchInfo*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="match_info_get_regex"
+              c:identifier="g_match_info_get_regex">
+      <return-value transfer-ownership="full">
+        <type name="Regex" c:type="GRegex*"/>
+      </return-value>
+      <parameters>
+        <parameter name="match_info" transfer-ownership="none">
+          <type name="MatchInfo" c:type="GMatchInfo*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="match_info_get_string"
+              c:identifier="g_match_info_get_string">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="match_info" transfer-ownership="none">
+          <type name="MatchInfo" c:type="GMatchInfo*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="match_info_is_partial_match"
+              c:identifier="g_match_info_is_partial_match">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="match_info" transfer-ownership="none">
+          <type name="MatchInfo" c:type="GMatchInfo*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="match_info_matches" c:identifier="g_match_info_matches">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="match_info" transfer-ownership="none">
+          <type name="MatchInfo" c:type="GMatchInfo*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="match_info_next"
+              c:identifier="g_match_info_next"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="match_info" transfer-ownership="none">
+          <type name="MatchInfo" c:type="GMatchInfo*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mem_chunk_alloc" c:identifier="g_mem_chunk_alloc">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem_chunk" transfer-ownership="none">
+          <type name="MemChunk" c:type="GMemChunk*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mem_chunk_alloc0" c:identifier="g_mem_chunk_alloc0">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem_chunk" transfer-ownership="none">
+          <type name="MemChunk" c:type="GMemChunk*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mem_chunk_clean" c:identifier="g_mem_chunk_clean">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem_chunk" transfer-ownership="none">
+          <type name="MemChunk" c:type="GMemChunk*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mem_chunk_destroy" c:identifier="g_mem_chunk_destroy">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem_chunk" transfer-ownership="none">
+          <type name="MemChunk" c:type="GMemChunk*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mem_chunk_free" c:identifier="g_mem_chunk_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem_chunk" transfer-ownership="none">
+          <type name="MemChunk" c:type="GMemChunk*"/>
+        </parameter>
+        <parameter name="mem" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </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">
+      <return-value transfer-ownership="full">
+        <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="int" c:type="gint"/>
+        </parameter>
+        <parameter name="area_size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mem_chunk_print" c:identifier="g_mem_chunk_print">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem_chunk" transfer-ownership="none">
+          <type name="MemChunk" c:type="GMemChunk*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mem_chunk_reset" c:identifier="g_mem_chunk_reset">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem_chunk" transfer-ownership="none">
+          <type name="MemChunk" c:type="GMemChunk*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mem_is_system_malloc"
+              c:identifier="g_mem_is_system_malloc">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="byte_size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mkdir_with_parents" c:identifier="g_mkdir_with_parents">
+      <return-value transfer-ownership="none">
+        <type name="int" 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="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="mkstemp" c:identifier="g_mkstemp">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="tmpl" transfer-ownership="full">
+          <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="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="tmpl" transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="mode" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_child_index" c:identifier="g_node_child_index">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_child_position" c:identifier="g_node_child_position">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+        <parameter name="child" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_children_foreach"
+              c:identifier="g_node_children_foreach">
+      <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="flags" transfer-ownership="none">
+          <type name="TraverseFlags" c:type="GTraverseFlags"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="NodeForeachFunc" c:type="GNodeForeachFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_copy" c:identifier="g_node_copy">
+      <return-value transfer-ownership="full">
+        <type name="Node" c:type="GNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_copy_deep" c:identifier="g_node_copy_deep">
+      <return-value transfer-ownership="full">
+        <type name="Node" c:type="GNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+        <parameter name="copy_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="CopyFunc" c:type="GCopyFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_depth" c:identifier="g_node_depth">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_destroy" c:identifier="g_node_destroy">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="root" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_find" c:identifier="g_node_find">
+      <return-value transfer-ownership="full">
+        <type name="Node" c:type="GNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="root" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+        <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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_find_child" c:identifier="g_node_find_child">
+      <return-value transfer-ownership="full">
+        <type name="Node" c:type="GNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TraverseFlags" c:type="GTraverseFlags"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_first_sibling" c:identifier="g_node_first_sibling">
+      <return-value transfer-ownership="full">
+        <type name="Node" c:type="GNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_get_root" c:identifier="g_node_get_root">
+      <return-value transfer-ownership="full">
+        <type name="Node" c:type="GNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_insert" c:identifier="g_node_insert">
+      <return-value transfer-ownership="full">
+        <type name="Node" c:type="GNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+        <parameter name="position" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="node" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_insert_after" c:identifier="g_node_insert_after">
+      <return-value transfer-ownership="full">
+        <type name="Node" c:type="GNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="node_insert_before" c:identifier="g_node_insert_before">
+      <return-value transfer-ownership="full">
+        <type name="Node" c:type="GNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="node_is_ancestor" c:identifier="g_node_is_ancestor">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+        <parameter name="descendant" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_last_child" c:identifier="g_node_last_child">
+      <return-value transfer-ownership="full">
+        <type name="Node" c:type="GNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_last_sibling" c:identifier="g_node_last_sibling">
+      <return-value transfer-ownership="full">
+        <type name="Node" c:type="GNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_max_height" c:identifier="g_node_max_height">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="root" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_n_children" c:identifier="g_node_n_children">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_n_nodes" c:identifier="g_node_n_nodes">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="root" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TraverseFlags" c:type="GTraverseFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_new" c:identifier="g_node_new">
+      <return-value transfer-ownership="full">
+        <type name="Node" c:type="GNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_nth_child" c:identifier="g_node_nth_child">
+      <return-value transfer-ownership="full">
+        <type name="Node" c:type="GNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="node" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </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_prepend" c:identifier="g_node_prepend">
+      <return-value transfer-ownership="full">
+        <type name="Node" c:type="GNode*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+        <parameter name="node" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+      </parameters>
+    </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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_reverse_children"
+              c:identifier="g_node_reverse_children">
+      <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>
+      </parameters>
+    </function>
+    <function name="node_traverse" c:identifier="g_node_traverse">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="root" transfer-ownership="none">
+          <type name="Node" c:type="GNode*"/>
+        </parameter>
+        <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="int" c:type="gint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="5">
+          <type name="NodeTraverseFunc" c:type="GNodeTraverseFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="node_unlink" c:identifier="g_node_unlink">
+      <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>
+      </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="any" 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_impl" c:identifier="g_once_impl">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="once" transfer-ownership="none">
+          <type name="Once" c:type="GOnce*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="ThreadFunc" c:type="GThreadFunc"/>
+        </parameter>
+        <parameter name="arg" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="once_init_enter" c:identifier="g_once_init_enter">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value_location"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="size_t" 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="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value_location"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="size_t" 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"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+        <parameter name="initialization_value" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_context_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="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+        <parameter name="group" transfer-ownership="none">
+          <type name="OptionGroup" c:type="GOptionGroup*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_context_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="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="option_context_free" c:identifier="g_option_context_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_context_get_description"
+              c:identifier="g_option_context_get_description">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_context_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="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+        <parameter name="main_help" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="group" transfer-ownership="none">
+          <type name="OptionGroup" c:type="GOptionGroup*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_context_get_help_enabled"
+              c:identifier="g_option_context_get_help_enabled">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_context_get_ignore_unknown_options"
+              c:identifier="g_option_context_get_ignore_unknown_options">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_context_get_main_group"
+              c:identifier="g_option_context_get_main_group">
+      <return-value transfer-ownership="full">
+        <type name="OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_context_get_summary"
+              c:identifier="g_option_context_get_summary">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_context_new" c:identifier="g_option_context_new">
+      <return-value transfer-ownership="full">
+        <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_context_parse"
+              c:identifier="g_option_context_parse"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+        <parameter name="argc" direction="inout" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <array length="1" c:type="gchar***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_context_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="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+        <parameter name="description" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_context_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="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+        <parameter name="help_enabled" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_context_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="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+        <parameter name="ignore_unknown" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_context_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="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+        <parameter name="group" transfer-ownership="none">
+          <type name="OptionGroup" c:type="GOptionGroup*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_context_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="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+        <parameter name="summary" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_context_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="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="TranslateFunc" c:type="GTranslateFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy_notify"
+                   transfer-ownership="none"
+                   scope="call">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_context_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="context" transfer-ownership="none">
+          <type name="OptionContext" c:type="GOptionContext*"/>
+        </parameter>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_group_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="group" transfer-ownership="none">
+          <type name="OptionGroup" c:type="GOptionGroup*"/>
+        </parameter>
+        <parameter name="entries" transfer-ownership="none">
+          <type name="OptionEntry" c:type="GOptionEntry*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_group_free" c:identifier="g_option_group_free">
+      <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>
+    </function>
+    <function name="option_group_new" c:identifier="g_option_group_new">
+      <return-value transfer-ownership="full">
+        <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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="call">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_group_set_error_hook"
+              c:identifier="g_option_group_set_error_hook">
+      <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>
+        <parameter name="error_func" transfer-ownership="none" scope="call">
+          <type name="OptionErrorFunc" c:type="GOptionErrorFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_group_set_parse_hooks"
+              c:identifier="g_option_group_set_parse_hooks">
+      <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>
+        <parameter name="pre_parse_func"
+                   transfer-ownership="none"
+                   scope="call">
+          <type name="OptionParseFunc" c:type="GOptionParseFunc"/>
+        </parameter>
+        <parameter name="post_parse_func"
+                   transfer-ownership="none"
+                   scope="call">
+          <type name="OptionParseFunc" c:type="GOptionParseFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_group_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="group" transfer-ownership="none">
+          <type name="OptionGroup" c:type="GOptionGroup*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="TranslateFunc" c:type="GTranslateFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy_notify"
+                   transfer-ownership="none"
+                   scope="call">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="option_group_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="group" transfer-ownership="none">
+          <type name="OptionGroup" c:type="GOptionGroup*"/>
+        </parameter>
+        <parameter name="domain" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_debug_string" c:identifier="g_parse_debug_string">
+      <return-value transfer-ownership="none">
+        <type name="uint" 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="uint" 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="boolean" 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="boolean" 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="uint" 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="boolean" 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="boolean" 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_equal" c:identifier="g_pattern_spec_equal">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec1" transfer-ownership="none">
+          <type name="PatternSpec" c:type="GPatternSpec*"/>
+        </parameter>
+        <parameter name="pspec2" transfer-ownership="none">
+          <type name="PatternSpec" c:type="GPatternSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pattern_spec_free" c:identifier="g_pattern_spec_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec" transfer-ownership="none">
+          <type name="PatternSpec" c:type="GPatternSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="pattern_spec_new" c:identifier="g_pattern_spec_new">
+      <return-value transfer-ownership="full">
+        <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="int" 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="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="timeout" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="prefix_error" c:identifier="g_prefix_error">
+      <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">
+      <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">
+      <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">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="format" transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </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">
+      <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">
+          <type name="PtrArray" c:type="GPtrArray*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_foreach" c:identifier="g_ptr_array_foreach">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="PtrArray" c:type="GPtrArray*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="Func" c:type="GFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_free" c:identifier="g_ptr_array_free">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="PtrArray" c:type="GPtrArray*"/>
+        </parameter>
+        <parameter name="free_seg" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_new" c:identifier="g_ptr_array_new">
+      <return-value transfer-ownership="full">
+        <type name="PtrArray" c:type="GPtrArray*"/>
+      </return-value>
+    </function>
+    <function name="ptr_array_new_with_free_func"
+              c:identifier="g_ptr_array_new_with_free_func">
+      <return-value transfer-ownership="full">
+        <type name="PtrArray" c:type="GPtrArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="element_free_func"
+                   transfer-ownership="none"
+                   scope="call">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_ref" c:identifier="g_ptr_array_ref">
+      <return-value transfer-ownership="full">
+        <type name="PtrArray" c:type="GPtrArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="PtrArray" c:type="GPtrArray*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_remove" c:identifier="g_ptr_array_remove">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="PtrArray" c:type="GPtrArray*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" 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="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="PtrArray" c:type="GPtrArray*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_remove_index"
+              c:identifier="g_ptr_array_remove_index">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="PtrArray" c:type="GPtrArray*"/>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_remove_index_fast"
+              c:identifier="g_ptr_array_remove_index_fast">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="PtrArray" c:type="GPtrArray*"/>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="uint" 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">
+          <type name="PtrArray" c:type="GPtrArray*"/>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="uint" 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">
+          <type name="PtrArray" c:type="GPtrArray*"/>
+        </parameter>
+        <parameter name="element_free_func"
+                   transfer-ownership="none"
+                   scope="call">
+          <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">
+          <type name="PtrArray" c:type="GPtrArray*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_sized_new" c:identifier="g_ptr_array_sized_new">
+      <return-value transfer-ownership="full">
+        <type name="PtrArray" c:type="GPtrArray*"/>
+      </return-value>
+      <parameters>
+        <parameter name="reserved_size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_sort" c:identifier="g_ptr_array_sort">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="PtrArray" c:type="GPtrArray*"/>
+        </parameter>
+        <parameter name="compare_func" transfer-ownership="none" scope="call">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ptr_array_sort_with_data"
+              c:identifier="g_ptr_array_sort_with_data">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="array" transfer-ownership="none">
+          <type name="PtrArray" c:type="GPtrArray*"/>
+        </parameter>
+        <parameter name="compare_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" 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">
+          <type name="PtrArray" c:type="GPtrArray*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="qsort_with_data" c:identifier="g_qsort_with_data">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pbase" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="total_elems" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="compare_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="4">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="quark_from_static_string"
+              c:identifier="g_quark_from_static_string">
+      <return-value transfer-ownership="full">
+        <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="full">
+        <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="full">
+        <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_clear" c:identifier="g_queue_clear">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_copy" c:identifier="g_queue_copy">
+      <return-value transfer-ownership="full">
+        <type name="Queue" c:type="GQueue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_delete_link" c:identifier="g_queue_delete_link">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="link_" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_find" c:identifier="g_queue_find">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_find_custom" c:identifier="g_queue_find_custom">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_foreach" c:identifier="g_queue_foreach">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="Func" c:type="GFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_free" c:identifier="g_queue_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_get_length" c:identifier="g_queue_get_length">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_index" c:identifier="g_queue_index">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_init" c:identifier="g_queue_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_insert_after" c:identifier="g_queue_insert_after">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="sibling" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_insert_before" c:identifier="g_queue_insert_before">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="sibling" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_insert_sorted" c:identifier="g_queue_insert_sorted">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_is_empty" c:identifier="g_queue_is_empty">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_link_index" c:identifier="g_queue_link_index">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="link_" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_new" c:identifier="g_queue_new">
+      <return-value transfer-ownership="full">
+        <type name="Queue" c:type="GQueue*"/>
+      </return-value>
+    </function>
+    <function name="queue_peek_head" c:identifier="g_queue_peek_head">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_peek_head_link"
+              c:identifier="g_queue_peek_head_link">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_peek_nth" c:identifier="g_queue_peek_nth">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_peek_nth_link" c:identifier="g_queue_peek_nth_link">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_peek_tail" c:identifier="g_queue_peek_tail">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_peek_tail_link"
+              c:identifier="g_queue_peek_tail_link">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_pop_head" c:identifier="g_queue_pop_head">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_pop_head_link" c:identifier="g_queue_pop_head_link">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_pop_nth" c:identifier="g_queue_pop_nth">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_pop_nth_link" c:identifier="g_queue_pop_nth_link">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_pop_tail" c:identifier="g_queue_pop_tail">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_pop_tail_link" c:identifier="g_queue_pop_tail_link">
+      <return-value transfer-ownership="full">
+        <type name="List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_push_head" c:identifier="g_queue_push_head">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_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="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="link_" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_push_nth" c:identifier="g_queue_push_nth">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_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="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="link_" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_push_tail" c:identifier="g_queue_push_tail">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_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="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="link_" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_remove" c:identifier="g_queue_remove">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_remove_all" c:identifier="g_queue_remove_all">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_reverse" c:identifier="g_queue_reverse">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_sort" c:identifier="g_queue_sort">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="compare_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="queue_unlink" c:identifier="g_queue_unlink">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="queue" transfer-ownership="none">
+          <type name="Queue" c:type="GQueue*"/>
+        </parameter>
+        <parameter name="link_" transfer-ownership="none">
+          <type name="List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rand_copy" c:identifier="g_rand_copy">
+      <return-value transfer-ownership="full">
+        <type name="Rand" c:type="GRand*"/>
+      </return-value>
+      <parameters>
+        <parameter name="rand_" transfer-ownership="none">
+          <type name="Rand" c:type="GRand*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rand_double" c:identifier="g_rand_double">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="rand_" transfer-ownership="none">
+          <type name="Rand" c:type="GRand*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rand_double_range" c:identifier="g_rand_double_range">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="rand_" transfer-ownership="none">
+          <type name="Rand" c:type="GRand*"/>
+        </parameter>
+        <parameter name="begin" 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="rand_free" c:identifier="g_rand_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rand_" transfer-ownership="none">
+          <type name="Rand" c:type="GRand*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rand_int" c:identifier="g_rand_int">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="rand_" transfer-ownership="none">
+          <type name="Rand" c:type="GRand*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rand_int_range" c:identifier="g_rand_int_range">
+      <return-value transfer-ownership="none">
+        <type name="int32" c:type="gint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="rand_" transfer-ownership="none">
+          <type name="Rand" c:type="GRand*"/>
+        </parameter>
+        <parameter name="begin" transfer-ownership="none">
+          <type name="int32" c:type="gint32"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="int32" c:type="gint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rand_new" c:identifier="g_rand_new">
+      <return-value transfer-ownership="full">
+        <type name="Rand" c:type="GRand*"/>
+      </return-value>
+    </function>
+    <function name="rand_new_with_seed" c:identifier="g_rand_new_with_seed">
+      <return-value transfer-ownership="full">
+        <type name="Rand" c:type="GRand*"/>
+      </return-value>
+      <parameters>
+        <parameter name="seed" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rand_new_with_seed_array"
+              c:identifier="g_rand_new_with_seed_array">
+      <return-value transfer-ownership="full">
+        <type name="Rand" c:type="GRand*"/>
+      </return-value>
+      <parameters>
+        <parameter name="seed" direction="out" transfer-ownership="none">
+          <type name="uint32" c:type="guint32*"/>
+        </parameter>
+        <parameter name="seed_length" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rand_set_seed" c:identifier="g_rand_set_seed">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="rand_" transfer-ownership="none">
+          <type name="Rand" c:type="GRand*"/>
+        </parameter>
+        <parameter name="seed" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rand_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="rand_" transfer-ownership="none">
+          <type name="Rand" c:type="GRand*"/>
+        </parameter>
+        <parameter name="seed" direction="out" transfer-ownership="none">
+          <type name="uint32" c:type="guint32*"/>
+        </parameter>
+        <parameter name="seed_length" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="random_double" c:identifier="g_random_double">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+    </function>
+    <function name="random_double_range" c:identifier="g_random_double_range">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="begin" 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="random_int" c:identifier="g_random_int">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+    </function>
+    <function name="random_int_range" c:identifier="g_random_int_range">
+      <return-value transfer-ownership="none">
+        <type name="int32" c:type="gint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="begin" transfer-ownership="none">
+          <type name="int32" c:type="gint32"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="int32" 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="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="realloc" c:identifier="g_realloc">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="n_bytes" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="realloc_n" c:identifier="g_realloc_n">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="n_blocks" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="n_block_bytes" transfer-ownership="none">
+          <type name="size_t" 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="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="replacement" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="has_references"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="boolean" c:type="gboolean*"/>
+        </parameter>
+      </parameters>
+    </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="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="regex_get_capture_count"
+              c:identifier="g_regex_get_capture_count">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="regex" transfer-ownership="none">
+          <type name="Regex" c:type="GRegex*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="regex_get_max_backref"
+              c:identifier="g_regex_get_max_backref">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="regex" transfer-ownership="none">
+          <type name="Regex" c:type="GRegex*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="regex_get_pattern" c:identifier="g_regex_get_pattern">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="regex" transfer-ownership="none">
+          <type name="Regex" c:type="GRegex*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="regex_get_string_number"
+              c:identifier="g_regex_get_string_number">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="regex" transfer-ownership="none">
+          <type name="Regex" c:type="GRegex*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="regex_match" c:identifier="g_regex_match">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="regex" transfer-ownership="none">
+          <type name="Regex" c:type="GRegex*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="regex_match_all" c:identifier="g_regex_match_all">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="regex" transfer-ownership="none">
+          <type name="Regex" c:type="GRegex*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="regex_match_all_full"
+              c:identifier="g_regex_match_all_full"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="regex" transfer-ownership="none">
+          <type name="Regex" c:type="GRegex*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="string_len" transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="start_position" transfer-ownership="none">
+          <type name="int" 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>
+    </function>
+    <function name="regex_match_full"
+              c:identifier="g_regex_match_full"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="regex" transfer-ownership="none">
+          <type name="Regex" c:type="GRegex*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="string_len" transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="start_position" transfer-ownership="none">
+          <type name="int" 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>
+    </function>
+    <function name="regex_match_simple" c:identifier="g_regex_match_simple">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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" throws="1">
+      <return-value transfer-ownership="full">
+        <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_ref" c:identifier="g_regex_ref">
+      <return-value transfer-ownership="full">
+        <type name="Regex" c:type="GRegex*"/>
+      </return-value>
+      <parameters>
+        <parameter name="regex" transfer-ownership="none">
+          <type name="Regex" c:type="GRegex*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="regex_replace" c:identifier="g_regex_replace" throws="1">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="regex" transfer-ownership="none">
+          <type name="Regex" c:type="GRegex*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="string_len" transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="start_position" transfer-ownership="none">
+          <type name="int" 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>
+    </function>
+    <function name="regex_replace_eval"
+              c:identifier="g_regex_replace_eval"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="regex" transfer-ownership="none">
+          <type name="Regex" c:type="GRegex*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="string_len" transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="start_position" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="match_options" transfer-ownership="none">
+          <type name="RegexMatchFlags" c:type="GRegexMatchFlags"/>
+        </parameter>
+        <parameter name="eval"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="6">
+          <type name="RegexEvalCallback" c:type="GRegexEvalCallback"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="regex_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="regex" transfer-ownership="none">
+          <type name="Regex" c:type="GRegex*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="string_len" transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="start_position" transfer-ownership="none">
+          <type name="int" 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>
+    </function>
+    <function name="regex_split" c:identifier="g_regex_split">
+      <return-value transfer-ownership="full">
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="regex" transfer-ownership="none">
+          <type name="Regex" c:type="GRegex*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="regex_split_full"
+              c:identifier="g_regex_split_full"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="regex" transfer-ownership="none">
+          <type name="Regex" c:type="GRegex*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="string_len" transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="start_position" transfer-ownership="none">
+          <type name="int" 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="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="regex_split_simple" c:identifier="g_regex_split_simple">
+      <return-value transfer-ownership="full">
+        <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="regex_unref" c:identifier="g_regex_unref">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="regex" transfer-ownership="none">
+          <type name="Regex" c:type="GRegex*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="relation_count" c:identifier="g_relation_count">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="relation" transfer-ownership="none">
+          <type name="Relation" c:type="GRelation*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="field" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="relation_delete" c:identifier="g_relation_delete">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="relation" transfer-ownership="none">
+          <type name="Relation" c:type="GRelation*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="field" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="relation_destroy" c:identifier="g_relation_destroy">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="relation" transfer-ownership="none">
+          <type name="Relation" c:type="GRelation*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="relation_exists" c:identifier="g_relation_exists">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="relation" transfer-ownership="none">
+          <type name="Relation" c:type="GRelation*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="relation_index" c:identifier="g_relation_index">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="relation" transfer-ownership="none">
+          <type name="Relation" c:type="GRelation*"/>
+        </parameter>
+        <parameter name="field" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="hash_func" transfer-ownership="none" scope="call">
+          <type name="HashFunc" c:type="GHashFunc"/>
+        </parameter>
+        <parameter name="key_equal_func"
+                   transfer-ownership="none"
+                   scope="call">
+          <type name="EqualFunc" c:type="GEqualFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="relation_insert" c:identifier="g_relation_insert">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="relation" transfer-ownership="none">
+          <type name="Relation" c:type="GRelation*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="relation_new" c:identifier="g_relation_new">
+      <return-value transfer-ownership="full">
+        <type name="Relation" c:type="GRelation*"/>
+      </return-value>
+      <parameters>
+        <parameter name="fields" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="relation_print" c:identifier="g_relation_print">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="relation" transfer-ownership="none">
+          <type name="Relation" c:type="GRelation*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="relation_select" c:identifier="g_relation_select">
+      <return-value transfer-ownership="full">
+        <type name="Tuples" c:type="GTuples*"/>
+      </return-value>
+      <parameters>
+        <parameter name="relation" transfer-ownership="none">
+          <type name="Relation" c:type="GRelation*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="field" transfer-ownership="none">
+          <type name="int" 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="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="filename" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_cur_line" c:identifier="g_scanner_cur_line">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="scanner" transfer-ownership="none">
+          <type name="Scanner" c:type="GScanner*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_cur_position"
+              c:identifier="g_scanner_cur_position">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="scanner" transfer-ownership="none">
+          <type name="Scanner" c:type="GScanner*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_cur_token" c:identifier="g_scanner_cur_token">
+      <return-value transfer-ownership="full">
+        <type name="TokenType" c:type="GTokenType"/>
+      </return-value>
+      <parameters>
+        <parameter name="scanner" transfer-ownership="none">
+          <type name="Scanner" c:type="GScanner*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_cur_value" c:identifier="g_scanner_cur_value">
+      <return-value transfer-ownership="full">
+        <type name="TokenValue" c:type="GTokenValue"/>
+      </return-value>
+      <parameters>
+        <parameter name="scanner" transfer-ownership="none">
+          <type name="Scanner" c:type="GScanner*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_destroy" c:identifier="g_scanner_destroy">
+      <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>
+      </parameters>
+    </function>
+    <function name="scanner_eof" c:identifier="g_scanner_eof">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="scanner" transfer-ownership="none">
+          <type name="Scanner" c:type="GScanner*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_error" c:identifier="g_scanner_error">
+      <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="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_get_next_token"
+              c:identifier="g_scanner_get_next_token">
+      <return-value transfer-ownership="full">
+        <type name="TokenType" c:type="GTokenType"/>
+      </return-value>
+      <parameters>
+        <parameter name="scanner" transfer-ownership="none">
+          <type name="Scanner" c:type="GScanner*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_input_file" c:identifier="g_scanner_input_file">
+      <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="input_fd" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_input_text" c:identifier="g_scanner_input_text">
+      <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="text" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="text_len" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_lookup_symbol"
+              c:identifier="g_scanner_lookup_symbol">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="scanner" transfer-ownership="none">
+          <type name="Scanner" c:type="GScanner*"/>
+        </parameter>
+        <parameter name="symbol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_new" c:identifier="g_scanner_new">
+      <return-value transfer-ownership="full">
+        <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="scanner_peek_next_token"
+              c:identifier="g_scanner_peek_next_token">
+      <return-value transfer-ownership="full">
+        <type name="TokenType" c:type="GTokenType"/>
+      </return-value>
+      <parameters>
+        <parameter name="scanner" transfer-ownership="none">
+          <type name="Scanner" c:type="GScanner*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_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="scanner" transfer-ownership="none">
+          <type name="Scanner" c:type="GScanner*"/>
+        </parameter>
+        <parameter name="scope_id" transfer-ownership="none">
+          <type name="uint" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_scope_foreach_symbol"
+              c:identifier="g_scanner_scope_foreach_symbol">
+      <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="scope_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="HFunc" c:type="GHFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_scope_lookup_symbol"
+              c:identifier="g_scanner_scope_lookup_symbol">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="scanner" transfer-ownership="none">
+          <type name="Scanner" c:type="GScanner*"/>
+        </parameter>
+        <parameter name="scope_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="symbol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_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="scanner" transfer-ownership="none">
+          <type name="Scanner" c:type="GScanner*"/>
+        </parameter>
+        <parameter name="scope_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="symbol" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_set_scope" c:identifier="g_scanner_set_scope">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="scanner" transfer-ownership="none">
+          <type name="Scanner" c:type="GScanner*"/>
+        </parameter>
+        <parameter name="scope_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_sync_file_offset"
+              c:identifier="g_scanner_sync_file_offset">
+      <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>
+      </parameters>
+    </function>
+    <function name="scanner_unexp_token" c:identifier="g_scanner_unexp_token">
+      <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="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="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scanner_warn" c:identifier="g_scanner_warn">
+      <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="format" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_append" c:identifier="g_sequence_append">
+      <return-value transfer-ownership="full">
+        <type name="SequenceIter" c:type="GSequenceIter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="seq" transfer-ownership="none">
+          <type name="Sequence" c:type="GSequence*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_foreach" c:identifier="g_sequence_foreach">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="seq" transfer-ownership="none">
+          <type name="Sequence" c:type="GSequence*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="Func" c:type="GFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_foreach_range"
+              c:identifier="g_sequence_foreach_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>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="Func" c:type="GFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_free" c:identifier="g_sequence_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="seq" transfer-ownership="none">
+          <type name="Sequence" c:type="GSequence*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_get" c:identifier="g_sequence_get">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_get_begin_iter"
+              c:identifier="g_sequence_get_begin_iter">
+      <return-value transfer-ownership="full">
+        <type name="SequenceIter" c:type="GSequenceIter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="seq" transfer-ownership="none">
+          <type name="Sequence" c:type="GSequence*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_get_end_iter"
+              c:identifier="g_sequence_get_end_iter">
+      <return-value transfer-ownership="full">
+        <type name="SequenceIter" c:type="GSequenceIter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="seq" transfer-ownership="none">
+          <type name="Sequence" c:type="GSequence*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_get_iter_at_pos"
+              c:identifier="g_sequence_get_iter_at_pos">
+      <return-value transfer-ownership="full">
+        <type name="SequenceIter" c:type="GSequenceIter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="seq" transfer-ownership="none">
+          <type name="Sequence" c:type="GSequence*"/>
+        </parameter>
+        <parameter name="pos" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_get_length" c:identifier="g_sequence_get_length">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="seq" transfer-ownership="none">
+          <type name="Sequence" c:type="GSequence*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_insert_before"
+              c:identifier="g_sequence_insert_before">
+      <return-value transfer-ownership="full">
+        <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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_insert_sorted"
+              c:identifier="g_sequence_insert_sorted">
+      <return-value transfer-ownership="full">
+        <type name="SequenceIter" c:type="GSequenceIter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="seq" transfer-ownership="none">
+          <type name="Sequence" c:type="GSequence*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="cmp_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="cmp_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_insert_sorted_iter"
+              c:identifier="g_sequence_insert_sorted_iter">
+      <return-value transfer-ownership="full">
+        <type name="SequenceIter" c:type="GSequenceIter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="seq" transfer-ownership="none">
+          <type name="Sequence" c:type="GSequence*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="iter_cmp"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="SequenceIterCompareFunc"
+                c:type="GSequenceIterCompareFunc"/>
+        </parameter>
+        <parameter name="cmp_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_iter_compare"
+              c:identifier="g_sequence_iter_compare">
+      <return-value transfer-ownership="none">
+        <type name="int" 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>
+      </parameters>
+    </function>
+    <function name="sequence_iter_get_position"
+              c:identifier="g_sequence_iter_get_position">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_iter_get_sequence"
+              c:identifier="g_sequence_iter_get_sequence">
+      <return-value transfer-ownership="full">
+        <type name="Sequence" c:type="GSequence*"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_iter_is_begin"
+              c:identifier="g_sequence_iter_is_begin">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_iter_is_end"
+              c:identifier="g_sequence_iter_is_end">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_iter_move" c:identifier="g_sequence_iter_move">
+      <return-value transfer-ownership="full">
+        <type name="SequenceIter" c:type="GSequenceIter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+        <parameter name="delta" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_iter_next" c:identifier="g_sequence_iter_next">
+      <return-value transfer-ownership="full">
+        <type name="SequenceIter" c:type="GSequenceIter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_iter_prev" c:identifier="g_sequence_iter_prev">
+      <return-value transfer-ownership="full">
+        <type name="SequenceIter" c:type="GSequenceIter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="SequenceIter" c:type="GSequenceIter*"/>
+        </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">
+      <return-value transfer-ownership="full">
+        <type name="Sequence" c:type="GSequence*"/>
+      </return-value>
+      <parameters>
+        <parameter name="data_destroy" transfer-ownership="none" scope="call">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_prepend" c:identifier="g_sequence_prepend">
+      <return-value transfer-ownership="full">
+        <type name="SequenceIter" c:type="GSequenceIter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="seq" transfer-ownership="none">
+          <type name="Sequence" c:type="GSequence*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_range_get_midpoint"
+              c:identifier="g_sequence_range_get_midpoint">
+      <return-value transfer-ownership="full">
+        <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_search" c:identifier="g_sequence_search">
+      <return-value transfer-ownership="full">
+        <type name="SequenceIter" c:type="GSequenceIter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="seq" transfer-ownership="none">
+          <type name="Sequence" c:type="GSequence*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="cmp_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="cmp_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_search_iter"
+              c:identifier="g_sequence_search_iter">
+      <return-value transfer-ownership="full">
+        <type name="SequenceIter" c:type="GSequenceIter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="seq" transfer-ownership="none">
+          <type name="Sequence" c:type="GSequence*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="iter_cmp"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="SequenceIterCompareFunc"
+                c:type="GSequenceIterCompareFunc"/>
+        </parameter>
+        <parameter name="cmp_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_sort" c:identifier="g_sequence_sort">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="seq" transfer-ownership="none">
+          <type name="Sequence" c:type="GSequence*"/>
+        </parameter>
+        <parameter name="cmp_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="cmp_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_sort_changed"
+              c:identifier="g_sequence_sort_changed">
+      <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"
+                   scope="call"
+                   closure="2">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="cmp_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_sort_changed_iter"
+              c:identifier="g_sequence_sort_changed_iter">
+      <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"
+                   scope="call"
+                   closure="2">
+          <type name="SequenceIterCompareFunc"
+                c:type="GSequenceIterCompareFunc"/>
+        </parameter>
+        <parameter name="cmp_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sequence_sort_iter" c:identifier="g_sequence_sort_iter">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="seq" transfer-ownership="none">
+          <type name="Sequence" c:type="GSequence*"/>
+        </parameter>
+        <parameter name="cmp_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="SequenceIterCompareFunc"
+                c:type="GSequenceIterCompareFunc"/>
+        </parameter>
+        <parameter name="cmp_data" transfer-ownership="none">
+          <type name="any" 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">
+      <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="int" 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="int" 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">
+      <return-value transfer-ownership="full">
+        <type name="PrintFunc" c:type="GPrintFunc"/>
+      </return-value>
+      <parameters>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="PrintFunc" c:type="GPrintFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="set_printerr_handler"
+              c:identifier="g_set_printerr_handler">
+      <return-value transfer-ownership="full">
+        <type name="PrintFunc" c:type="GPrintFunc"/>
+      </return-value>
+      <parameters>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="PrintFunc" c:type="GPrintFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="setenv" c:identifier="g_setenv">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shell_parse_argv"
+              c:identifier="g_shell_parse_argv"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="argvp" direction="out" 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">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="block_size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slice_alloc0" c:identifier="g_slice_alloc0">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="block_size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slice_copy" c:identifier="g_slice_copy">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="block_size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="mem_block" transfer-ownership="none">
+          <type name="any" 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="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="mem_block" transfer-ownership="none">
+          <type name="any" 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="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="mem_chain" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="next_offset" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slice_get_config" c:identifier="g_slice_get_config">
+      <return-value transfer-ownership="none">
+        <type name="int64" 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="full">
+        <type name="int64" 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="int64" c:type="gint64"/>
+        </parameter>
+        <parameter name="n_values" direction="out" transfer-ownership="full">
+          <type name="uint" 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="int64" c:type="gint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_alloc" c:identifier="g_slist_alloc">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+    </function>
+    <function name="slist_append" c:identifier="g_slist_append">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_concat" c:identifier="g_slist_concat">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list1" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="list2" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_copy" c:identifier="g_slist_copy">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_delete_link" c:identifier="g_slist_delete_link">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="link_" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_find" c:identifier="g_slist_find">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_find_custom" c:identifier="g_slist_find_custom">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_foreach" c:identifier="g_slist_foreach">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="Func" c:type="GFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" 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="SList" c:type="GSList*"/>
+        </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="SList" c:type="GSList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_index" c:identifier="g_slist_index">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_insert" c:identifier="g_slist_insert">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="position" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_insert_before" c:identifier="g_slist_insert_before">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="slist" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="sibling" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_insert_sorted" c:identifier="g_slist_insert_sorted">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_insert_sorted_with_data"
+              c:identifier="g_slist_insert_sorted_with_data">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_last" c:identifier="g_slist_last">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_length" c:identifier="g_slist_length">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_nth" c:identifier="g_slist_nth">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_nth_data" c:identifier="g_slist_nth_data">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="uint" 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="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="llink" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_prepend" c:identifier="g_slist_prepend">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_remove" c:identifier="g_slist_remove">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_remove_all" c:identifier="g_slist_remove_all">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_remove_link" c:identifier="g_slist_remove_link">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="link_" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_reverse" c:identifier="g_slist_reverse">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_sort" c:identifier="g_slist_sort">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="compare_func" transfer-ownership="none" scope="call">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="slist_sort_with_data"
+              c:identifier="g_slist_sort_with_data">
+      <return-value transfer-ownership="full">
+        <type name="SList" c:type="GSList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="SList" c:type="GSList*"/>
+        </parameter>
+        <parameter name="compare_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="snprintf" c:identifier="g_snprintf">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="n" transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_add_poll" c:identifier="g_source_add_poll">
+      <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>
+        <parameter name="fd" transfer-ownership="none">
+          <type name="PollFD" c:type="GPollFD*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_attach" c:identifier="g_source_attach">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="source" transfer-ownership="none">
+          <type name="Source" c:type="GSource*"/>
+        </parameter>
+        <parameter name="context" transfer-ownership="none">
+          <type name="MainContext" c:type="GMainContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_destroy" c:identifier="g_source_destroy">
+      <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>
+    </function>
+    <function name="source_get_can_recurse"
+              c:identifier="g_source_get_can_recurse">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="source" transfer-ownership="none">
+          <type name="Source" c:type="GSource*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_get_context" c:identifier="g_source_get_context">
+      <return-value transfer-ownership="full">
+        <type name="MainContext" c:type="GMainContext*"/>
+      </return-value>
+      <parameters>
+        <parameter name="source" transfer-ownership="none">
+          <type name="Source" c:type="GSource*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_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="source" transfer-ownership="none">
+          <type name="Source" c:type="GSource*"/>
+        </parameter>
+        <parameter name="timeval" transfer-ownership="none">
+          <type name="TimeVal" c:type="GTimeVal*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_get_id" c:identifier="g_source_get_id">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="source" transfer-ownership="none">
+          <type name="Source" c:type="GSource*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_get_priority" c:identifier="g_source_get_priority">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="source" transfer-ownership="none">
+          <type name="Source" c:type="GSource*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_is_destroyed" c:identifier="g_source_is_destroyed">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="source" transfer-ownership="none">
+          <type name="Source" c:type="GSource*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_new" c:identifier="g_source_new">
+      <return-value transfer-ownership="full">
+        <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="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_ref" c:identifier="g_source_ref">
+      <return-value transfer-ownership="full">
+        <type name="Source" c:type="GSource*"/>
+      </return-value>
+      <parameters>
+        <parameter name="source" transfer-ownership="none">
+          <type name="Source" c:type="GSource*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_remove" c:identifier="g_source_remove">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="tag" transfer-ownership="none">
+          <type name="uint" 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="boolean" 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="any" 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="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_remove_poll" c:identifier="g_source_remove_poll">
+      <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>
+        <parameter name="fd" transfer-ownership="none">
+          <type name="PollFD" c:type="GPollFD*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_set_callback" c:identifier="g_source_set_callback">
+      <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>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="SourceFunc" c:type="GSourceFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="call">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_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="source" transfer-ownership="none">
+          <type name="Source" c:type="GSource*"/>
+        </parameter>
+        <parameter name="callback_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="callback_funcs" transfer-ownership="none">
+          <type name="SourceCallbackFuncs" c:type="GSourceCallbackFuncs*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_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="source" transfer-ownership="none">
+          <type name="Source" c:type="GSource*"/>
+        </parameter>
+        <parameter name="can_recurse" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_set_funcs" c:identifier="g_source_set_funcs">
+      <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>
+        <parameter name="funcs" transfer-ownership="none">
+          <type name="SourceFuncs" c:type="GSourceFuncs*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_set_priority" c:identifier="g_source_set_priority">
+      <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>
+        <parameter name="priority" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_unref" c:identifier="g_source_unref">
+      <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>
+    </function>
+    <function name="spaced_primes_closest"
+              c:identifier="g_spaced_primes_closest">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="num" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spawn_async" c:identifier="g_spawn_async" throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="envp" transfer-ownership="none" allow-none="1">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="child_pid" direction="out" transfer-ownership="full">
+          <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="boolean" 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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="envp" transfer-ownership="none" allow-none="1">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="child_pid" direction="out" transfer-ownership="full">
+          <type name="Pid" c:type="GPid*"/>
+        </parameter>
+        <parameter name="standard_input"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="standard_output"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="standard_error"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="int" 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="boolean" 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="boolean" 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"
+                   transfer-ownership="full">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="standard_error"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="exit_status"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="spawn_sync" c:identifier="g_spawn_sync" throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="envp" transfer-ownership="none" allow-none="1">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="standard_output"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="standard_error"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="utf8" c:type="gchar**"/>
+        </parameter>
+        <parameter name="exit_status"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="sprintf" c:identifier="g_sprintf">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="format" transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_mutex_free" c:identifier="g_static_mutex_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mutex" transfer-ownership="none">
+          <type name="StaticMutex" c:type="GStaticMutex*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_mutex_get_mutex_impl"
+              c:identifier="g_static_mutex_get_mutex_impl">
+      <return-value transfer-ownership="full">
+        <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="static_mutex_init" c:identifier="g_static_mutex_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mutex" transfer-ownership="none">
+          <type name="StaticMutex" c:type="GStaticMutex*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_private_free" c:identifier="g_static_private_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="private_key" transfer-ownership="none">
+          <type name="StaticPrivate" c:type="GStaticPrivate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_private_get" c:identifier="g_static_private_get">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="private_key" transfer-ownership="none">
+          <type name="StaticPrivate" c:type="GStaticPrivate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_private_init" c:identifier="g_static_private_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="private_key" transfer-ownership="none">
+          <type name="StaticPrivate" c:type="GStaticPrivate*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_private_set" c:identifier="g_static_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="StaticPrivate" c:type="GStaticPrivate*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="call">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_rec_mutex_free"
+              c:identifier="g_static_rec_mutex_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mutex" transfer-ownership="none">
+          <type name="StaticRecMutex" c:type="GStaticRecMutex*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_rec_mutex_init"
+              c:identifier="g_static_rec_mutex_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mutex" transfer-ownership="none">
+          <type name="StaticRecMutex" c:type="GStaticRecMutex*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_rec_mutex_lock"
+              c:identifier="g_static_rec_mutex_lock">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mutex" transfer-ownership="none">
+          <type name="StaticRecMutex" c:type="GStaticRecMutex*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_rec_mutex_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="mutex" transfer-ownership="none">
+          <type name="StaticRecMutex" c:type="GStaticRecMutex*"/>
+        </parameter>
+        <parameter name="depth" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_rec_mutex_trylock"
+              c:identifier="g_static_rec_mutex_trylock">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="mutex" transfer-ownership="none">
+          <type name="StaticRecMutex" c:type="GStaticRecMutex*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_rec_mutex_unlock"
+              c:identifier="g_static_rec_mutex_unlock">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="mutex" transfer-ownership="none">
+          <type name="StaticRecMutex" c:type="GStaticRecMutex*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_rec_mutex_unlock_full"
+              c:identifier="g_static_rec_mutex_unlock_full">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="mutex" transfer-ownership="none">
+          <type name="StaticRecMutex" c:type="GStaticRecMutex*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_rw_lock_free" c:identifier="g_static_rw_lock_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="lock" transfer-ownership="none">
+          <type name="StaticRWLock" c:type="GStaticRWLock*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_rw_lock_init" c:identifier="g_static_rw_lock_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="lock" transfer-ownership="none">
+          <type name="StaticRWLock" c:type="GStaticRWLock*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_rw_lock_reader_lock"
+              c:identifier="g_static_rw_lock_reader_lock">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="lock" transfer-ownership="none">
+          <type name="StaticRWLock" c:type="GStaticRWLock*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_rw_lock_reader_trylock"
+              c:identifier="g_static_rw_lock_reader_trylock">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="lock" transfer-ownership="none">
+          <type name="StaticRWLock" c:type="GStaticRWLock*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_rw_lock_reader_unlock"
+              c:identifier="g_static_rw_lock_reader_unlock">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="lock" transfer-ownership="none">
+          <type name="StaticRWLock" c:type="GStaticRWLock*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_rw_lock_writer_lock"
+              c:identifier="g_static_rw_lock_writer_lock">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="lock" transfer-ownership="none">
+          <type name="StaticRWLock" c:type="GStaticRWLock*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_rw_lock_writer_trylock"
+              c:identifier="g_static_rw_lock_writer_trylock">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="lock" transfer-ownership="none">
+          <type name="StaticRWLock" c:type="GStaticRWLock*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="static_rw_lock_writer_unlock"
+              c:identifier="g_static_rw_lock_writer_unlock">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="lock" transfer-ownership="none">
+          <type name="StaticRWLock" c:type="GStaticRWLock*"/>
+        </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="full">
+          <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="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v1" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="str_has_prefix" c:identifier="g_str_has_prefix">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="boolean" 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="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="any" 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="full">
+          <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="int8" c:type="gchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strcasecmp" c:identifier="g_strcasecmp">
+      <return-value transfer-ownership="none">
+        <type name="int" 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="full">
+          <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="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strcmp0" c:identifier="g_strcmp0">
+      <return-value transfer-ownership="none">
+        <type name="int" 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">
+      <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="full">
+          <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="int8" 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="full">
+          <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">
+      <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="strdupv" c:identifier="g_strdupv">
+      <return-value transfer-ownership="full">
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="str_array" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </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="int" 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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_append" c:identifier="g_string_append">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="val" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_append_c" c:identifier="g_string_append_c">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="int8" c:type="gchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_append_len" c:identifier="g_string_append_len">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="val" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_append_printf"
+              c:identifier="g_string_append_printf">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </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="string_append_unichar"
+              c:identifier="g_string_append_unichar">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="wc" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_append_uri_escaped"
+              c:identifier="g_string_append_uri_escaped">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <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="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_ascii_down" c:identifier="g_string_ascii_down">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_ascii_up" c:identifier="g_string_ascii_up">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_assign" c:identifier="g_string_assign">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="rval" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_chunk_clear" c:identifier="g_string_chunk_clear">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="chunk" transfer-ownership="none">
+          <type name="StringChunk" c:type="GStringChunk*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_chunk_free" c:identifier="g_string_chunk_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="chunk" transfer-ownership="none">
+          <type name="StringChunk" c:type="GStringChunk*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_chunk_insert" c:identifier="g_string_chunk_insert">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="chunk" transfer-ownership="none">
+          <type name="StringChunk" c:type="GStringChunk*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_chunk_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="chunk" transfer-ownership="none">
+          <type name="StringChunk" c:type="GStringChunk*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_chunk_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="chunk" transfer-ownership="none">
+          <type name="StringChunk" c:type="GStringChunk*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_chunk_new" c:identifier="g_string_chunk_new">
+      <return-value transfer-ownership="full">
+        <type name="StringChunk" c:type="GStringChunk*"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_down" c:identifier="g_string_down">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_equal" c:identifier="g_string_equal">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="v" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="v2" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_erase" c:identifier="g_string_erase">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="pos" transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_free" c:identifier="g_string_free">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="free_segment" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_hash" c:identifier="g_string_hash">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_insert" c:identifier="g_string_insert">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="pos" transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="val" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_insert_c" c:identifier="g_string_insert_c">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="pos" transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="int8" c:type="gchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_insert_len" c:identifier="g_string_insert_len">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="pos" transfer-ownership="none">
+          <type name="ssize_t" 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="ssize_t" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_insert_unichar"
+              c:identifier="g_string_insert_unichar">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="pos" transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="wc" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_new" c:identifier="g_string_new">
+      <return-value transfer-ownership="full">
+        <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">
+      <return-value transfer-ownership="full">
+        <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="ssize_t" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_overwrite" c:identifier="g_string_overwrite">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="pos" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="val" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_overwrite_len"
+              c:identifier="g_string_overwrite_len">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="pos" transfer-ownership="none">
+          <type name="size_t" 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="ssize_t" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_prepend" c:identifier="g_string_prepend">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="val" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_prepend_c" c:identifier="g_string_prepend_c">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="int8" c:type="gchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_prepend_len" c:identifier="g_string_prepend_len">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="val" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_prepend_unichar"
+              c:identifier="g_string_prepend_unichar">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="wc" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_printf" c:identifier="g_string_printf">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </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="string_set_size" c:identifier="g_string_set_size">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_sized_new" c:identifier="g_string_sized_new">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="dfl_size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_truncate" c:identifier="g_string_truncate">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="string_up" c:identifier="g_string_up">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </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">
+      <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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strlcat" c:identifier="g_strlcat">
+      <return-value transfer-ownership="none">
+        <type name="size_t" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="full">
+          <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="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strlcpy" c:identifier="g_strlcpy">
+      <return-value transfer-ownership="none">
+        <type name="size_t" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="dest" transfer-ownership="full">
+          <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="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strncasecmp" c:identifier="g_strncasecmp">
+      <return-value transfer-ownership="none">
+        <type name="int" 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="uint" 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="size_t" 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="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="fill_char" transfer-ownership="none">
+          <type name="int8" 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="full">
+          <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="ssize_t" 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="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strsplit" c:identifier="g_strsplit">
+      <return-value transfer-ownership="full">
+        <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="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strsplit_set" c:identifier="g_strsplit_set">
+      <return-value transfer-ownership="full">
+        <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="int" 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="ssize_t" 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="double" 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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </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="full">
+          <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="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="str_array" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_add_data_func" c:identifier="g_test_add_data_func">
+      <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="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="test_func" transfer-ownership="none">
+          <type name="any" c:type="any*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_add_func" c:identifier="g_test_add_func">
+      <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="any" c:type="any*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_add_vtable" c:identifier="g_test_add_vtable">
+      <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="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="test_data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="data_setup" transfer-ownership="none">
+          <type name="any" c:type="any*"/>
+        </parameter>
+        <parameter name="data_test" transfer-ownership="none">
+          <type name="any" c:type="any*"/>
+        </parameter>
+        <parameter name="data_teardown" transfer-ownership="none">
+          <type name="any" c:type="any*"/>
+        </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">
+      <return-value transfer-ownership="full">
+        <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="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="test_data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="data_setup" transfer-ownership="none">
+          <type name="any" c:type="any*"/>
+        </parameter>
+        <parameter name="data_test" transfer-ownership="none">
+          <type name="any" c:type="any*"/>
+        </parameter>
+        <parameter name="data_teardown" transfer-ownership="none">
+          <type name="any" c:type="any*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_create_suite" c:identifier="g_test_create_suite">
+      <return-value transfer-ownership="full">
+        <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">
+      <return-value transfer-ownership="full">
+        <type name="TestSuite" c:type="GTestSuite*"/>
+      </return-value>
+    </function>
+    <function name="test_init" c:identifier="g_test_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </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>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_log_buffer_free"
+              c:identifier="g_test_log_buffer_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tbuffer" transfer-ownership="none">
+          <type name="TestLogBuffer" c:type="GTestLogBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_log_buffer_new" c:identifier="g_test_log_buffer_new">
+      <return-value transfer-ownership="full">
+        <type name="TestLogBuffer" c:type="GTestLogBuffer*"/>
+      </return-value>
+    </function>
+    <function name="test_log_buffer_pop" c:identifier="g_test_log_buffer_pop">
+      <return-value transfer-ownership="full">
+        <type name="TestLogMsg" c:type="GTestLogMsg*"/>
+      </return-value>
+      <parameters>
+        <parameter name="tbuffer" transfer-ownership="none">
+          <type name="TestLogBuffer" c:type="GTestLogBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_log_buffer_push"
+              c:identifier="g_test_log_buffer_push">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tbuffer" transfer-ownership="none">
+          <type name="TestLogBuffer" c:type="GTestLogBuffer*"/>
+        </parameter>
+        <parameter name="n_bytes" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="bytes" transfer-ownership="none">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_log_msg_free" c:identifier="g_test_log_msg_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tmsg" transfer-ownership="none">
+          <type name="TestLogMsg" c:type="GTestLogMsg*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_log_set_fatal_handler"
+              c:identifier="g_test_log_set_fatal_handler">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="log_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="1">
+          <type name="TestLogFatalFunc" c:type="GTestLogFatalFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" 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">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="maximized_quantity" transfer-ownership="none">
+          <type name="double" 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">
+      <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">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="minimized_quantity" transfer-ownership="none">
+          <type name="double" 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="call"
+                   closure="1">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+        <parameter name="destroy_data" transfer-ownership="none">
+          <type name="any" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_rand_double" c:identifier="g_test_rand_double">
+      <return-value transfer-ownership="none">
+        <type name="double" 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="double" c:type="double"/>
+      </return-value>
+      <parameters>
+        <parameter name="range_start" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+        <parameter name="range_end" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_rand_int" c:identifier="g_test_rand_int">
+      <return-value transfer-ownership="none">
+        <type name="int32" 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="int32" c:type="gint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="begin" transfer-ownership="none">
+          <type name="int32" c:type="gint32"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <type name="int32" c:type="gint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_run" c:identifier="g_test_run">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+    </function>
+    <function name="test_run_suite" c:identifier="g_test_run_suite">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="suite" transfer-ownership="none">
+          <type name="TestSuite" c:type="GTestSuite*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_suite_add" c:identifier="g_test_suite_add">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="suite" transfer-ownership="none">
+          <type name="TestSuite" c:type="GTestSuite*"/>
+        </parameter>
+        <parameter name="test_case" transfer-ownership="none">
+          <type name="TestCase" c:type="GTestCase*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_suite_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="suite" transfer-ownership="none">
+          <type name="TestSuite" c:type="GTestSuite*"/>
+        </parameter>
+        <parameter name="nestedsuite" 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="double" c:type="double"/>
+      </return-value>
+    </function>
+    <function name="test_timer_last" c:identifier="g_test_timer_last">
+      <return-value transfer-ownership="none">
+        <type name="double" 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="int" 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="uint64" 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="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="usec_timeout" transfer-ownership="none">
+          <type name="uint64" 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="boolean" 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="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="thread_create_full"
+              c:identifier="g_thread_create_full"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="Thread" c:type="GThread*"/>
+      </return-value>
+      <parameters>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="1">
+          <type name="ThreadFunc" c:type="GThreadFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="stack_size" transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="joinable" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="bound" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="priority" transfer-ownership="none">
+          <type name="ThreadPriority" c:type="GThreadPriority"/>
+        </parameter>
+      </parameters>
+    </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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="thread_foreach" c:identifier="g_thread_foreach">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="thread_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="1">
+          <type name="Func" c:type="GFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="thread_get_initialized"
+              c:identifier="g_thread_get_initialized">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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_join" c:identifier="g_thread_join">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="thread" transfer-ownership="none">
+          <type name="Thread" c:type="GThread*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="thread_pool_free" c:identifier="g_thread_pool_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pool" transfer-ownership="none">
+          <type name="ThreadPool" c:type="GThreadPool*"/>
+        </parameter>
+        <parameter name="immediate" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="wait_" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </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="uint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="thread_pool_get_max_threads"
+              c:identifier="g_thread_pool_get_max_threads">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="pool" transfer-ownership="none">
+          <type name="ThreadPool" c:type="GThreadPool*"/>
+        </parameter>
+      </parameters>
+    </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="int" c:type="gint"/>
+      </return-value>
+    </function>
+    <function name="thread_pool_get_num_threads"
+              c:identifier="g_thread_pool_get_num_threads">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="pool" transfer-ownership="none">
+          <type name="ThreadPool" c:type="GThreadPool*"/>
+        </parameter>
+      </parameters>
+    </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="uint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="thread_pool_new"
+              c:identifier="g_thread_pool_new"
+              throws="1">
+      <return-value transfer-ownership="full">
+        <type name="ThreadPool" c:type="GThreadPool*"/>
+      </return-value>
+      <parameters>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="1">
+          <type name="Func" c:type="GFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="max_threads" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="exclusive" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="thread_pool_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="pool" transfer-ownership="none">
+          <type name="ThreadPool" c:type="GThreadPool*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </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="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="thread_pool_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="pool" transfer-ownership="none">
+          <type name="ThreadPool" c:type="GThreadPool*"/>
+        </parameter>
+        <parameter name="max_threads" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </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="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="thread_pool_set_sort_function"
+              c:identifier="g_thread_pool_set_sort_function">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="pool" transfer-ownership="none">
+          <type name="ThreadPool" c:type="GThreadPool*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </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_pool_unprocessed"
+              c:identifier="g_thread_pool_unprocessed">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="pool" transfer-ownership="none">
+          <type name="ThreadPool" c:type="GThreadPool*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="thread_self" c:identifier="g_thread_self">
+      <return-value transfer-ownership="full">
+        <type name="Thread" c:type="GThread*"/>
+      </return-value>
+    </function>
+    <function name="thread_set_priority" c:identifier="g_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="Thread" c:type="GThread*"/>
+        </parameter>
+        <parameter name="priority" transfer-ownership="none">
+          <type name="ThreadPriority" c:type="GThreadPriority"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="time_val_add" c:identifier="g_time_val_add">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="TimeVal" c:type="GTimeVal*"/>
+        </parameter>
+        <parameter name="microseconds" transfer-ownership="none">
+          <type name="long" c:type="glong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="time_val_from_iso8601"
+              c:identifier="g_time_val_from_iso8601">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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_val_to_iso8601" c:identifier="g_time_val_to_iso8601">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="TimeVal" c:type="GTimeVal*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timeout_add" c:identifier="g_timeout_add_full">
+      <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="interval" transfer-ownership="none">
+          <type name="uint" 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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="call">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timeout_add_seconds"
+              c:identifier="g_timeout_add_seconds_full">
+      <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="interval" transfer-ownership="none">
+          <type name="uint" 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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="notify" transfer-ownership="none" scope="call">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timeout_source_new" c:identifier="g_timeout_source_new">
+      <return-value transfer-ownership="full">
+        <type name="Source" c:type="GSource*"/>
+      </return-value>
+      <parameters>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timeout_source_new_seconds"
+              c:identifier="g_timeout_source_new_seconds">
+      <return-value transfer-ownership="full">
+        <type name="Source" c:type="GSource*"/>
+      </return-value>
+      <parameters>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timer_continue" c:identifier="g_timer_continue">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="timer" transfer-ownership="none">
+          <type name="Timer" c:type="GTimer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timer_destroy" c:identifier="g_timer_destroy">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="timer" transfer-ownership="none">
+          <type name="Timer" c:type="GTimer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timer_elapsed" c:identifier="g_timer_elapsed">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="timer" transfer-ownership="none">
+          <type name="Timer" c:type="GTimer*"/>
+        </parameter>
+        <parameter name="microseconds"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="ulong" c:type="gulong*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timer_new" c:identifier="g_timer_new">
+      <return-value transfer-ownership="full">
+        <type name="Timer" c:type="GTimer*"/>
+      </return-value>
+    </function>
+    <function name="timer_reset" c:identifier="g_timer_reset">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="timer" transfer-ownership="none">
+          <type name="Timer" c:type="GTimer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timer_start" c:identifier="g_timer_start">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="timer" transfer-ownership="none">
+          <type name="Timer" c:type="GTimer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timer_stop" c:identifier="g_timer_stop">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="timer" transfer-ownership="none">
+          <type name="Timer" c:type="GTimer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="trash_stack_height" c:identifier="g_trash_stack_height">
+      <return-value transfer-ownership="none">
+        <type name="uint" 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">
+      <return-value transfer-ownership="none">
+        <type name="any" 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">
+      <return-value transfer-ownership="none">
+        <type name="any" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_destroy" c:identifier="g_tree_destroy">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree" transfer-ownership="none">
+          <type name="Tree" c:type="GTree*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_foreach" c:identifier="g_tree_foreach">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree" transfer-ownership="none">
+          <type name="Tree" c:type="GTree*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="TraverseFunc" c:type="GTraverseFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_height" c:identifier="g_tree_height">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree" transfer-ownership="none">
+          <type name="Tree" c:type="GTree*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_insert" c:identifier="g_tree_insert">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree" transfer-ownership="none">
+          <type name="Tree" c:type="GTree*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_lookup" c:identifier="g_tree_lookup">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree" transfer-ownership="none">
+          <type name="Tree" c:type="GTree*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_lookup_extended"
+              c:identifier="g_tree_lookup_extended">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree" transfer-ownership="none">
+          <type name="Tree" c:type="GTree*"/>
+        </parameter>
+        <parameter name="lookup_key" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="orig_key" transfer-ownership="none">
+          <type name="any" c:type="gpointer*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="any" c:type="gpointer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_new" c:identifier="g_tree_new">
+      <return-value transfer-ownership="full">
+        <type name="Tree" c:type="GTree*"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_compare_func"
+                   transfer-ownership="none"
+                   scope="call">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_new_full" c:identifier="g_tree_new_full">
+      <return-value transfer-ownership="full">
+        <type name="Tree" c:type="GTree*"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_compare_func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="1"
+                   destroy="2">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="key_compare_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="key_destroy_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   destroy="3">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+        <parameter name="value_destroy_func"
+                   transfer-ownership="none"
+                   scope="call">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_new_with_data" c:identifier="g_tree_new_with_data">
+      <return-value transfer-ownership="full">
+        <type name="Tree" c:type="GTree*"/>
+      </return-value>
+      <parameters>
+        <parameter name="key_compare_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="1">
+          <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
+        </parameter>
+        <parameter name="key_compare_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_nnodes" c:identifier="g_tree_nnodes">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree" transfer-ownership="none">
+          <type name="Tree" c:type="GTree*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_ref" c:identifier="g_tree_ref">
+      <return-value transfer-ownership="full">
+        <type name="Tree" c:type="GTree*"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree" transfer-ownership="none">
+          <type name="Tree" c:type="GTree*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_remove" c:identifier="g_tree_remove">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree" transfer-ownership="none">
+          <type name="Tree" c:type="GTree*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_replace" c:identifier="g_tree_replace">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree" transfer-ownership="none">
+          <type name="Tree" c:type="GTree*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_search" c:identifier="g_tree_search">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree" transfer-ownership="none">
+          <type name="Tree" c:type="GTree*"/>
+        </parameter>
+        <parameter name="search_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="CompareFunc" c:type="GCompareFunc"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_steal" c:identifier="g_tree_steal">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree" transfer-ownership="none">
+          <type name="Tree" c:type="GTree*"/>
+        </parameter>
+        <parameter name="key" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_traverse" c:identifier="g_tree_traverse">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree" transfer-ownership="none">
+          <type name="Tree" c:type="GTree*"/>
+        </parameter>
+        <parameter name="traverse_func" transfer-ownership="none" scope="call">
+          <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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_unref" c:identifier="g_tree_unref">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tree" transfer-ownership="none">
+          <type name="Tree" c:type="GTree*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="try_malloc" c:identifier="g_try_malloc">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_bytes" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="try_malloc0" c:identifier="g_try_malloc0">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_bytes" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="try_malloc0_n" c:identifier="g_try_malloc0_n">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_blocks" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="n_block_bytes" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="try_malloc_n" c:identifier="g_try_malloc_n">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="n_blocks" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="n_block_bytes" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="try_realloc" c:identifier="g_try_realloc">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="n_bytes" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="try_realloc_n" c:identifier="g_try_realloc_n">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="mem" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="n_blocks" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="n_block_bytes" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tuples_destroy" c:identifier="g_tuples_destroy">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="tuples" transfer-ownership="none">
+          <type name="Tuples" c:type="GTuples*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tuples_index" c:identifier="g_tuples_index">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="tuples" transfer-ownership="none">
+          <type name="Tuples" c:type="GTuples*"/>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="field" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ucs4_to_utf16" c:identifier="g_ucs4_to_utf16" throws="1">
+      <return-value transfer-ownership="full">
+        <type name="unichar2" c:type="gunichar2*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="long" c:type="glong"/>
+        </parameter>
+        <parameter name="items_read" direction="out" transfer-ownership="full">
+          <type name="long" c:type="glong*"/>
+        </parameter>
+        <parameter name="items_written"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="long" c:type="glong*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="ucs4_to_utf8" c:identifier="g_ucs4_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="unichar" c:type="gunichar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="long" c:type="glong"/>
+        </parameter>
+        <parameter name="items_read" direction="out" transfer-ownership="full">
+          <type name="long" c:type="glong*"/>
+        </parameter>
+        <parameter name="items_written"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="long" c:type="glong*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_break_type" c:identifier="g_unichar_break_type">
+      <return-value transfer-ownership="full">
+        <type name="UnicodeBreakType" c:type="GUnicodeBreakType"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_combining_class"
+              c:identifier="g_unichar_combining_class">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="uc" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_digit_value" c:identifier="g_unichar_digit_value">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_get_mirror_char"
+              c:identifier="g_unichar_get_mirror_char">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+        <parameter name="mirrored_ch" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_get_script" c:identifier="g_unichar_get_script">
+      <return-value transfer-ownership="full">
+        <type name="UnicodeScript" c:type="GUnicodeScript"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_isalnum" c:identifier="g_unichar_isalnum">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_isalpha" c:identifier="g_unichar_isalpha">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_iscntrl" c:identifier="g_unichar_iscntrl">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_isdefined" c:identifier="g_unichar_isdefined">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_isdigit" c:identifier="g_unichar_isdigit">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_isgraph" c:identifier="g_unichar_isgraph">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_islower" c:identifier="g_unichar_islower">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_ismark" c:identifier="g_unichar_ismark">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_isprint" c:identifier="g_unichar_isprint">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_ispunct" c:identifier="g_unichar_ispunct">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_isspace" c:identifier="g_unichar_isspace">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_istitle" c:identifier="g_unichar_istitle">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_isupper" c:identifier="g_unichar_isupper">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_iswide" c:identifier="g_unichar_iswide">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_iswide_cjk" c:identifier="g_unichar_iswide_cjk">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_isxdigit" c:identifier="g_unichar_isxdigit">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_iszerowidth" c:identifier="g_unichar_iszerowidth">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_to_utf8" c:identifier="g_unichar_to_utf8">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+        <parameter name="outbuf" transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_tolower" c:identifier="g_unichar_tolower">
+      <return-value transfer-ownership="full">
+        <type name="unichar" c:type="gunichar"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_totitle" c:identifier="g_unichar_totitle">
+      <return-value transfer-ownership="full">
+        <type name="unichar" c:type="gunichar"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_toupper" c:identifier="g_unichar_toupper">
+      <return-value transfer-ownership="full">
+        <type name="unichar" c:type="gunichar"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_type" c:identifier="g_unichar_type">
+      <return-value transfer-ownership="full">
+        <type name="UnicodeType" c:type="GUnicodeType"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_validate" c:identifier="g_unichar_validate">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_xdigit_value"
+              c:identifier="g_unichar_xdigit_value">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_canonical_decomposition"
+              c:identifier="g_unicode_canonical_decomposition">
+      <return-value transfer-ownership="full">
+        <type name="unichar" c:type="gunichar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar"/>
+        </parameter>
+        <parameter name="result_len" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unicode_canonical_ordering"
+              c:identifier="g_unicode_canonical_ordering">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="unichar" c:type="gunichar*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unlink" c:identifier="g_unlink">
+      <return-value transfer-ownership="none">
+        <type name="int" 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="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="uri_list_extract_uris"
+              c:identifier="g_uri_list_extract_uris">
+      <return-value transfer-ownership="full">
+        <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="ulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf16_to_ucs4" c:identifier="g_utf16_to_ucs4" throws="1">
+      <return-value transfer-ownership="full">
+        <type name="unichar" c:type="gunichar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="unichar2" c:type="gunichar2*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="long" c:type="glong"/>
+        </parameter>
+        <parameter name="items_read" direction="out" transfer-ownership="full">
+          <type name="long" c:type="glong*"/>
+        </parameter>
+        <parameter name="items_written"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="long" 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="unichar2" c:type="gunichar2*"/>
+        </parameter>
+        <parameter name="len" transfer-ownership="none">
+          <type name="long" c:type="glong"/>
+        </parameter>
+        <parameter name="items_read" direction="out" transfer-ownership="full">
+          <type name="long" c:type="glong*"/>
+        </parameter>
+        <parameter name="items_written"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="long" 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="ssize_t" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_collate" c:identifier="g_utf8_collate">
+      <return-value transfer-ownership="none">
+        <type name="int" 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="ssize_t" 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="ssize_t" 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">
+      <return-value transfer-ownership="full">
+        <type name="unichar" 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">
+      <return-value transfer-ownership="full">
+        <type name="unichar" 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="ssize_t" 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="ssize_t" 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="long" 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="long" 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">
+      <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="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" 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="ssize_t" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_strlen" c:identifier="g_utf8_strlen">
+      <return-value transfer-ownership="none">
+        <type name="long" 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="ssize_t" 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="full">
+          <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="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_strrchr" c:identifier="g_utf8_strrchr">
+      <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="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="c" transfer-ownership="none">
+          <type name="unichar" 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="ssize_t" 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="ssize_t" c:type="gssize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_to_ucs4" c:identifier="g_utf8_to_ucs4" throws="1">
+      <return-value transfer-ownership="full">
+        <type name="unichar" 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="long" c:type="glong"/>
+        </parameter>
+        <parameter name="items_read" direction="out" transfer-ownership="full">
+          <type name="long" c:type="glong*"/>
+        </parameter>
+        <parameter name="items_written"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="long" c:type="glong*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_to_ucs4_fast" c:identifier="g_utf8_to_ucs4_fast">
+      <return-value transfer-ownership="full">
+        <type name="unichar" 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="long" c:type="glong"/>
+        </parameter>
+        <parameter name="items_written"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="long" c:type="glong*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_to_utf16" c:identifier="g_utf8_to_utf16" throws="1">
+      <return-value transfer-ownership="full">
+        <type name="unichar2" 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="long" c:type="glong"/>
+        </parameter>
+        <parameter name="items_read" direction="out" transfer-ownership="full">
+          <type name="long" c:type="glong*"/>
+        </parameter>
+        <parameter name="items_written"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="long" c:type="glong*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="utf8_validate" c:identifier="g_utf8_validate">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="ssize_t" c:type="gssize"/>
+        </parameter>
+        <parameter name="end" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_builder_add" c:identifier="g_variant_builder_add">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="builder" transfer-ownership="none">
+          <type name="VariantBuilder" c:type="GVariantBuilder*"/>
+        </parameter>
+        <parameter name="format_string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_builder_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="builder" transfer-ownership="none">
+          <type name="VariantBuilder" c:type="GVariantBuilder*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_builder_clear"
+              c:identifier="g_variant_builder_clear">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="builder" transfer-ownership="none">
+          <type name="VariantBuilder" c:type="GVariantBuilder*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_builder_close"
+              c:identifier="g_variant_builder_close">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="builder" transfer-ownership="none">
+          <type name="VariantBuilder" c:type="GVariantBuilder*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_builder_end" c:identifier="g_variant_builder_end">
+      <return-value transfer-ownership="full">
+        <type name="Variant" c:type="GVariant*"/>
+      </return-value>
+      <parameters>
+        <parameter name="builder" transfer-ownership="none">
+          <type name="VariantBuilder" c:type="GVariantBuilder*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_builder_init"
+              c:identifier="g_variant_builder_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="builder" transfer-ownership="none">
+          <type name="VariantBuilder" c:type="GVariantBuilder*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_builder_new" c:identifier="g_variant_builder_new">
+      <return-value transfer-ownership="full">
+        <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_builder_open"
+              c:identifier="g_variant_builder_open">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="builder" transfer-ownership="none">
+          <type name="VariantBuilder" c:type="GVariantBuilder*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_builder_ref" c:identifier="g_variant_builder_ref">
+      <return-value transfer-ownership="full">
+        <type name="VariantBuilder" c:type="GVariantBuilder*"/>
+      </return-value>
+      <parameters>
+        <parameter name="builder" transfer-ownership="none">
+          <type name="VariantBuilder" c:type="GVariantBuilder*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_builder_unref"
+              c:identifier="g_variant_builder_unref">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="builder" transfer-ownership="none">
+          <type name="VariantBuilder" c:type="GVariantBuilder*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_byteswap" c:identifier="g_variant_byteswap">
+      <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>
+    </function>
+    <function name="variant_classify" c:identifier="g_variant_classify">
+      <return-value transfer-ownership="full">
+        <type name="VariantClass" c:type="GVariantClass"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_dup_string" c:identifier="g_variant_dup_string">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_dup_strv" c:identifier="g_variant_dup_strv">
+      <return-value transfer-ownership="full">
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_equal" c:identifier="g_variant_equal">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="one" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="two" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get" c:identifier="g_variant_get">
+      <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>
+        <parameter name="format_string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get_boolean" c:identifier="g_variant_get_boolean">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get_byte" c:identifier="g_variant_get_byte">
+      <return-value transfer-ownership="none">
+        <type name="uint8" c:type="guchar"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get_child" c:identifier="g_variant_get_child">
+      <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>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="size_t" 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>
+    </function>
+    <function name="variant_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="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+        <parameter name="index_" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get_data" c:identifier="g_variant_get_data">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gconstpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get_double" c:identifier="g_variant_get_double">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="gdouble"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get_fixed_array"
+              c:identifier="g_variant_get_fixed_array">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gconstpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+        <parameter name="n_elements" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+        <parameter name="element_size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get_handle" c:identifier="g_variant_get_handle">
+      <return-value transfer-ownership="none">
+        <type name="int32" c:type="gint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get_int16" c:identifier="g_variant_get_int16">
+      <return-value transfer-ownership="none">
+        <type name="int16" c:type="gint16"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get_int32" c:identifier="g_variant_get_int32">
+      <return-value transfer-ownership="none">
+        <type name="int32" c:type="gint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get_int64" c:identifier="g_variant_get_int64">
+      <return-value transfer-ownership="none">
+        <type name="int64" c:type="gint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get_maybe" c:identifier="g_variant_get_maybe">
+      <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>
+    </function>
+    <function name="variant_get_normal_form"
+              c:identifier="g_variant_get_normal_form">
+      <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>
+    </function>
+    <function name="variant_get_size" c:identifier="g_variant_get_size">
+      <return-value transfer-ownership="none">
+        <type name="size_t" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get_string" c:identifier="g_variant_get_string">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get_strv" c:identifier="g_variant_get_strv">
+      <return-value transfer-ownership="full">
+        <array c:type="gchar**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+        <parameter name="length" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </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_get_type_string"
+              c:identifier="g_variant_get_type_string">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get_uint16" c:identifier="g_variant_get_uint16">
+      <return-value transfer-ownership="none">
+        <type name="uint16" c:type="guint16"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get_uint32" c:identifier="g_variant_get_uint32">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get_uint64" c:identifier="g_variant_get_uint64">
+      <return-value transfer-ownership="none">
+        <type name="uint64" c:type="guint64"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_get_variant" c:identifier="g_variant_get_variant">
+      <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>
+    </function>
+    <function name="variant_hash" c:identifier="g_variant_hash">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_is_container"
+              c:identifier="g_variant_is_container">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_is_normal_form"
+              c:identifier="g_variant_is_normal_form">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_is_object_path"
+              c:identifier="g_variant_is_object_path">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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_of_type" c:identifier="g_variant_is_of_type">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_is_signature"
+              c:identifier="g_variant_is_signature">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_iter_copy" c:identifier="g_variant_iter_copy">
+      <return-value transfer-ownership="full">
+        <type name="VariantIter" c:type="GVariantIter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="VariantIter" c:type="GVariantIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_iter_free" c:identifier="g_variant_iter_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="VariantIter" c:type="GVariantIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_iter_init" c:identifier="g_variant_iter_init">
+      <return-value transfer-ownership="none">
+        <type name="size_t" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="VariantIter" c:type="GVariantIter*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_iter_loop" c:identifier="g_variant_iter_loop">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="VariantIter" c:type="GVariantIter*"/>
+        </parameter>
+        <parameter name="format_string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_iter_n_children"
+              c:identifier="g_variant_iter_n_children">
+      <return-value transfer-ownership="none">
+        <type name="size_t" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="VariantIter" c:type="GVariantIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_iter_new" c:identifier="g_variant_iter_new">
+      <return-value transfer-ownership="full">
+        <type name="VariantIter" c:type="GVariantIter*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_iter_next" c:identifier="g_variant_iter_next">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="VariantIter" c:type="GVariantIter*"/>
+        </parameter>
+        <parameter name="format_string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_iter_next_value"
+              c:identifier="g_variant_iter_next_value">
+      <return-value transfer-ownership="full">
+        <type name="Variant" c:type="GVariant*"/>
+      </return-value>
+      <parameters>
+        <parameter name="iter" transfer-ownership="none">
+          <type name="VariantIter" c:type="GVariantIter*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_n_children" c:identifier="g_variant_n_children">
+      <return-value transfer-ownership="none">
+        <type name="size_t" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_new" c:identifier="g_variant_new">
+      <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>
+    </function>
+    <function name="variant_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="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_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="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_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="uint8" c:type="guchar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_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="key" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_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="double" c:type="gdouble"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_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="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="trusted" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="notify"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="5">
+          <type name="DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_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="int32" c:type="gint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_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="int16" c:type="gint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_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="int32" c:type="gint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_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="int64" c:type="gint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_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>
+    </function>
+    <function name="variant_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>
+    </function>
+    <function name="variant_new_parsed" c:identifier="g_variant_new_parsed">
+      <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>
+    </function>
+    <function name="variant_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>
+    </function>
+    <function name="variant_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>
+    </function>
+    <function name="variant_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 c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="ssize_t" c:type="gssize"/>
+        </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="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_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="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_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="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_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="uint64" c:type="guint64"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_new_variant" c:identifier="g_variant_new_variant">
+      <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>
+    </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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_print" c:identifier="g_variant_print">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+        <parameter name="type_annotate" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_print_string"
+              c:identifier="g_variant_print_string">
+      <return-value transfer-ownership="full">
+        <type name="String" c:type="GString*"/>
+      </return-value>
+      <parameters>
+        <parameter name="value" transfer-ownership="none">
+          <type name="Variant" c:type="GVariant*"/>
+        </parameter>
+        <parameter name="string" transfer-ownership="none">
+          <type name="String" c:type="GString*"/>
+        </parameter>
+        <parameter name="type_annotate" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_ref" c:identifier="g_variant_ref">
+      <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>
+    </function>
+    <function name="variant_ref_sink" c:identifier="g_variant_ref_sink">
+      <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>
+    </function>
+    <function name="variant_store" c:identifier="g_variant_store">
+      <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>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </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_copy" c:identifier="g_variant_type_copy">
+      <return-value transfer-ownership="full">
+        <type name="VariantType" c:type="GVariantType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_dup_string"
+              c:identifier="g_variant_type_dup_string">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_element"
+              c:identifier="g_variant_type_element">
+      <return-value transfer-ownership="none">
+        <type name="VariantType" c:type="GVariantType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_equal" c:identifier="g_variant_type_equal">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type1" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="type2" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_first" c:identifier="g_variant_type_first">
+      <return-value transfer-ownership="none">
+        <type name="VariantType" c:type="GVariantType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_free" c:identifier="g_variant_type_free">
+      <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>
+    </function>
+    <function name="variant_type_get_string_length"
+              c:identifier="g_variant_type_get_string_length">
+      <return-value transfer-ownership="none">
+        <type name="size_t" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_hash" c:identifier="g_variant_type_hash">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_is_array"
+              c:identifier="g_variant_type_is_array">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_is_basic"
+              c:identifier="g_variant_type_is_basic">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_is_container"
+              c:identifier="g_variant_type_is_container">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_is_definite"
+              c:identifier="g_variant_type_is_definite">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_is_dict_entry"
+              c:identifier="g_variant_type_is_dict_entry">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_is_maybe"
+              c:identifier="g_variant_type_is_maybe">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_is_subtype_of"
+              c:identifier="g_variant_type_is_subtype_of">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+        <parameter name="supertype" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_is_tuple"
+              c:identifier="g_variant_type_is_tuple">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_is_variant"
+              c:identifier="g_variant_type_is_variant">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_key" c:identifier="g_variant_type_key">
+      <return-value transfer-ownership="none">
+        <type name="VariantType" c:type="GVariantType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_n_items"
+              c:identifier="g_variant_type_n_items">
+      <return-value transfer-ownership="none">
+        <type name="size_t" c:type="gsize"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_new" c:identifier="g_variant_type_new">
+      <return-value transfer-ownership="full">
+        <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_array"
+              c:identifier="g_variant_type_new_array">
+      <return-value transfer-ownership="full">
+        <type name="VariantType" c:type="GVariantType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_new_dict_entry"
+              c:identifier="g_variant_type_new_dict_entry">
+      <return-value transfer-ownership="full">
+        <type name="VariantType" c:type="GVariantType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="key" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_new_maybe"
+              c:identifier="g_variant_type_new_maybe">
+      <return-value transfer-ownership="full">
+        <type name="VariantType" c:type="GVariantType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="element" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_new_tuple"
+              c:identifier="g_variant_type_new_tuple">
+      <return-value transfer-ownership="full">
+        <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="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_next" c:identifier="g_variant_type_next">
+      <return-value transfer-ownership="none">
+        <type name="VariantType" c:type="GVariantType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_peek_string"
+              c:identifier="g_variant_type_peek_string">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </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="boolean" 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="boolean" 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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_type_value" c:identifier="g_variant_type_value">
+      <return-value transfer-ownership="none">
+        <type name="VariantType" c:type="GVariantType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="VariantType" c:type="GVariantType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="variant_unref" c:identifier="g_variant_unref">
+      <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>
+    </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="int" 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>
diff --git a/basis/gmodule/GModule-2.0.gir b/basis/gmodule/GModule-2.0.gir
new file mode 100644 (file)
index 0000000..27a64f0
--- /dev/null
@@ -0,0 +1,108 @@
+<?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"/>
+  <package name="gmodule-2.0"/>
+  <c:include name="gmodule.h"/>
+  <namespace name="GModule"
+             version="2.0"
+             shared-library="libgmodule-2.0.so.0"
+             c:prefix="g">
+    <record name="Module" c:type="GModule">
+      <method name="close" c:identifier="g_module_close">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="symbol" c:identifier="g_module_symbol">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="any" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="name" c:identifier="g_module_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </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="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="error" c:identifier="g_module_error">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="open" c:identifier="g_module_open">
+      <return-value transfer-ownership="full">
+        <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="supported" c:identifier="g_module_supported">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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/gmodule.factor b/basis/gmodule/gmodule.factor
new file mode 100644 (file)
index 0000000..a33150c
--- /dev/null
@@ -0,0 +1,6 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: gir glib ;
+
+IN-GIR: gmodule vocab:gmodule/GModule-2.0.gir
+
diff --git a/basis/gobject/GObject-2.0.gir b/basis/gobject/GObject-2.0.gir
new file mode 100644 (file)
index 0000000..8534b3a
--- /dev/null
@@ -0,0 +1,6231 @@
+<?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"/>
+  <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:prefix="g">
+    <alias name="SignalCMarshaller"
+           target="ClosureMarshal"
+           c:type="GSignalCMarshaller"/>
+    <alias name="Strv" target="none" c:type="GStrv"/>
+    <alias name="chararray" target="none" c:type="gchararray"/>
+    <glib:boxed c:type="GArray"
+                glib:name="Array"
+                glib:type-name="GArray"
+                glib:get-type="g_array_get_type">
+    </glib:boxed>
+    <callback name="BaseFinalizeFunc"
+              c:type="GBaseFinalizeFunc"
+              doc="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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="BaseInitFunc"
+              c:type="GBaseInitFunc"
+              doc="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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="BoxedCopyFunc"
+              c:type="GBoxedCopyFunc"
+              doc="This function is provided by the user and should produce a copy of the passed
+in boxed structure.">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="BoxedFreeFunc"
+              c:type="GBoxedFreeFunc"
+              doc="This function is provided by the user and should free the boxed
+structure passed.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <glib:boxed c:type="GByteArray"
+                glib:name="ByteArray"
+                glib:type-name="GByteArray"
+                glib:get-type="g_byte_array_get_type">
+    </glib:boxed>
+    <record name="CClosure"
+            c:type="GCClosure"
+            doc="A #GCClosure is a specialization of #GClosure for C function callbacks.">
+      <field name="closure" writable="1">
+        <type name="Closure" c:type="GClosure"/>
+      </field>
+      <field name="callback" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+    </record>
+    <callback name="Callback"
+              c:type="GCallback"
+              doc="The type used for callback functions in structure definitions and function
+signatures. This doesn&apos;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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="ClassFinalizeFunc"
+              c:type="GClassFinalizeFunc"
+              doc="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).">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="class_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ClassInitFunc"
+              c:type="GClassInitFunc"
+              doc="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&apos; type.
+&lt;/para&gt;&lt;/listitem&gt;
+&lt;listitem&gt;&lt;para&gt;
+4 - Invocation of the class&apos; 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 (&quot;some string&quot;);
+}
+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 (&quot;some other string&quot;);
+}
+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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="class_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="Closure"
+            c:type="GClosure"
+            doc="g_closure_invoke()
+g_closure_invalidate()
+A #GClosure represents a callback supplied by the programmer."
+            glib:type-name="GClosure"
+            glib:get-type="g_closure_get_type">
+      <field name="ref_count" writable="1" bits="15">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="meta_marshal" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="n_guards" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="n_fnotifiers" writable="1" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="n_inotifiers" writable="1" bits="8">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="in_inotify" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="floating" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="derivative_flag" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="in_marshal" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_invalid" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="marshal">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="notifiers" writable="1">
+        <type name="ClosureNotifyData" c:type="GClosureNotifyData*"/>
+      </field>
+      <constructor name="new_simple" c:identifier="g_closure_new_simple">
+        <return-value transfer-ownership="full">
+          <type name="Closure" c:type="GClosure*"/>
+        </return-value>
+        <parameters>
+          <parameter name="sizeof_closure" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_object" c:identifier="g_closure_new_object">
+        <return-value transfer-ownership="full">
+          <type name="Closure" c:type="GClosure*"/>
+        </return-value>
+        <parameters>
+          <parameter name="sizeof_closure" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="ref" c:identifier="g_closure_ref">
+        <return-value transfer-ownership="full">
+          <type name="Closure" c:type="GClosure*"/>
+        </return-value>
+      </method>
+      <method name="sink" c:identifier="g_closure_sink">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="g_closure_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_finalize_notifier"
+              c:identifier="g_closure_add_finalize_notifier">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="notify_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify_func" transfer-ownership="none" scope="call">
+            <type name="ClosureNotify" c:type="GClosureNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_finalize_notifier"
+              c:identifier="g_closure_remove_finalize_notifier">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="notify_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify_func" transfer-ownership="none" scope="call">
+            <type name="ClosureNotify" c:type="GClosureNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_invalidate_notifier"
+              c:identifier="g_closure_add_invalidate_notifier">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="notify_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify_func" transfer-ownership="none" scope="call">
+            <type name="ClosureNotify" c:type="GClosureNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_invalidate_notifier"
+              c:identifier="g_closure_remove_invalidate_notifier">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="notify_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="notify_func" transfer-ownership="none" scope="call">
+            <type name="ClosureNotify" c:type="GClosureNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_marshal_guards"
+              c:identifier="g_closure_add_marshal_guards">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pre_marshal_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="pre_marshal_notify"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="3">
+            <type name="ClosureNotify" c:type="GClosureNotify"/>
+          </parameter>
+          <parameter name="post_marshal_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="post_marshal_notify"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="ClosureNotify" c:type="GClosureNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_marshal" c:identifier="g_closure_set_marshal">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marshal" transfer-ownership="none" scope="call">
+            <type name="ClosureMarshal" c:type="GClosureMarshal"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_meta_marshal"
+              c:identifier="g_closure_set_meta_marshal">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="marshal_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="meta_marshal"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="ClosureMarshal" c:type="GClosureMarshal"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="invalidate" c:identifier="g_closure_invalidate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="invoke" c:identifier="g_closure_invoke">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="return_value" transfer-ownership="none">
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="n_param_values" transfer-ownership="none">
+            <type name="uint" 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="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="ClosureMarshal"
+              c:type="GClosureMarshal"
+              doc="callback of @closure doesn&apos;t return a value.
+which to invoke the callback of @closure
+to g_closure_invoke()
+see g_closure_set_marshal() and g_closure_set_meta_marshal()
+The type used for marshaller functions.">
+      <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="uint" 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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="marshal_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ClosureNotify"
+              c:type="GClosureNotify"
+              doc="The type used for the various notification callbacks which can be registered
+on closures.">
+      <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="gpointer"/>
+        </parameter>
+        <parameter name="closure" transfer-ownership="none">
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ClosureNotifyData" c:type="GClosureNotifyData">
+      <field name="data" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="notify" writable="1">
+        <type name="ClosureNotify" c:type="GClosureNotify"/>
+      </field>
+    </record>
+    <bitfield name="ConnectFlags"
+              doc="default handler of the signal.
+calling the handler.
+The connection flags are used to specify the behaviour of a signal&apos;s
+connection."
+              c:type="GConnectFlags">
+      <member name="after" value="1" c:identifier="G_CONNECT_AFTER"/>
+      <member name="swapped" value="2" c:identifier="G_CONNECT_SWAPPED"/>
+    </bitfield>
+    <glib:boxed c:type="GDate"
+                glib:name="Date"
+                glib:type-name="GDate"
+                glib:get-type="g_date_get_type">
+    </glib:boxed>
+    <record name="EnumClass"
+            c:type="GEnumClass"
+            doc="individual values.
+The class of an enumeration type holds information about its
+possible values.">
+      <field name="g_type_class" writable="1">
+        <type name="TypeClass" c:type="GTypeClass"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="n_values" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="values" writable="1">
+        <type name="EnumValue" c:type="GEnumValue*"/>
+      </field>
+    </record>
+    <record name="EnumValue"
+            c:type="GEnumValue"
+            doc="A structure which contains a single enum value, its name, and its
+nickname.">
+      <field name="value" writable="1">
+        <type name="int" 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>
+    <record name="FlagsClass"
+            c:type="GFlagsClass"
+            doc="individual values.
+The class of a flags type holds information about its
+possible values.">
+      <field name="g_type_class" writable="1">
+        <type name="TypeClass" c:type="GTypeClass"/>
+      </field>
+      <field name="mask" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="n_values" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="values" writable="1">
+        <type name="FlagsValue" c:type="GFlagsValue*"/>
+      </field>
+    </record>
+    <record name="FlagsValue"
+            c:type="GFlagsValue"
+            doc="A structure which contains a single flags value, its name, and its
+nickname.">
+      <field name="value" writable="1">
+        <type name="uint" 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 c:type="GHashTable"
+                glib:name="HashTable"
+                glib:type-name="GHashTable"
+                glib:get-type="g_hash_table_get_type">
+    </glib:boxed>
+    <glib:boxed c:type="GIOChannel"
+                glib:name="IOChannel"
+                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:type="GInitiallyUnowned"
+           doc="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."
+           parent="Object"
+           abstract="1"
+           glib:type-name="GInitiallyUnowned"
+           glib:get-type="g_initially_unowned_get_type"
+           glib:type-struct="InitiallyUnownedClass">
+      <field name="g_type_instance" writable="1">
+        <type name="TypeInstance" c:type="GTypeInstance"/>
+      </field>
+      <field name="ref_count" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="qdata" writable="1">
+        <type name="GLib.Data" c:type="GData*"/>
+      </field>
+    </class>
+    <record name="InitiallyUnownedClass"
+            c:type="GInitiallyUnownedClass"
+            glib:is-gtype-struct-for="InitiallyUnowned"
+            doc="The class structure for the &lt;structname&gt;GInitiallyUnowned&lt;/structname&gt; type.">
+      <field name="g_type_class">
+        <type name="TypeClass" c:type="GTypeClass"/>
+      </field>
+      <field name="construct_properties">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="constructor">
+        <callback name="constructor" c:type="constructor">
+          <return-value transfer-ownership="full">
+            <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="uint" 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" c:type="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="uint" 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" c:type="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="uint" 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" c:type="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" c:type="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"
+                  c:type="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="uint" 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" c:type="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" c:type="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="size_t" c:type="gsize"/>
+      </field>
+      <field name="pdummy">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="6">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <callback name="InstanceInitFunc"
+              c:type="GInstanceInitFunc"
+              doc="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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="TypeInstance" c:type="GTypeInstance*"/>
+        </parameter>
+        <parameter name="g_class" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="InterfaceFinalizeFunc"
+              c:type="GInterfaceFinalizeFunc"
+              doc="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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_iface" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="iface_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="InterfaceInfo"
+            c:type="GInterfaceInfo"
+            doc="A structure that provides information to the type system which is
+used specifically for managing interface types.">
+      <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="any" c:type="gpointer"/>
+      </field>
+    </record>
+    <callback name="InterfaceInitFunc"
+              c:type="GInterfaceInitFunc"
+              doc="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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_iface" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="iface_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Object"
+           c:type="GObject"
+           doc="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."
+           abstract="1"
+           glib:type-name="GObject"
+           glib:get-type="intern"
+           glib:type-struct="ObjectClass">
+      <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="uint" 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="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="uint" 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="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="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="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="pspecs" transfer-ownership="none">
+            <type name="ParamSpec" c:type="GParamSpec**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="notify">
+        <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="constructed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="set_property" c:identifier="g_object_set_property">
+        <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="value" transfer-ownership="none">
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_property" c:identifier="g_object_get_property">
+        <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="value" transfer-ownership="none">
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="freeze_notify" c:identifier="g_object_freeze_notify">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="notify" c:identifier="g_object_notify">
+        <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>
+        </parameters>
+      </method>
+      <method name="thaw_notify" c:identifier="g_object_thaw_notify">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="weak_ref" c:identifier="g_object_weak_ref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="notify"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="WeakNotify" c:type="GWeakNotify"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="weak_unref" c:identifier="g_object_weak_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="notify"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="WeakNotify" c:type="GWeakNotify"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_weak_pointer" c:identifier="g_object_add_weak_pointer">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="weak_pointer_location"
+                     direction="inout"
+                     transfer-ownership="none">
+            <type name="any" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_weak_pointer"
+              c:identifier="g_object_remove_weak_pointer">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="weak_pointer_location"
+                     direction="inout"
+                     transfer-ownership="none">
+            <type name="any" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_toggle_ref" c:identifier="g_object_add_toggle_ref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="notify"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="ToggleNotify" c:type="GToggleNotify"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_toggle_ref"
+              c:identifier="g_object_remove_toggle_ref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="notify"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="ToggleNotify" c:type="GToggleNotify"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_qdata" c:identifier="g_object_get_qdata">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="quark" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qdata" c:identifier="g_object_set_qdata">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="quark" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qdata_full" c:identifier="g_object_set_qdata_full">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="quark" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="steal_qdata" c:identifier="g_object_steal_qdata">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="quark" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_data" c:identifier="g_object_get_data">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_data" c:identifier="g_object_set_data">
+        <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="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_data_full" c:identifier="g_object_set_data_full">
+        <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="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="steal_data" c:identifier="g_object_steal_data">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="watch_closure" c:identifier="g_object_watch_closure">
+        <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>
+        </parameters>
+      </method>
+      <method name="force_floating" c:identifier="g_object_force_floating">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="run_dispose" c:identifier="g_object_run_dispose">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="g_type_instance" writable="1">
+        <type name="TypeInstance" c:type="GTypeInstance"/>
+      </field>
+      <field name="ref_count" writable="1">
+        <type name="uint" 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="complete the object initialization after all the construction properties are
+set. The first thing a @constructor implementation must do is chain up to the
+needed, e.g. to handle construct properties, or to implement singletons.
+overridden for every type with properties. Implementations of @set_property
+don&apos;t need to emit property change notification explicitly, this is handled
+by the type system.
+overridden for every type with properties.
+objects, but keep the instance otherwise intact, so that client method
+invocations still work. It may be run multiple times (due to reference
+loops). Before returning, @dispose should chain up to the @dispose method
+of the parent class.
+the instance begun in @dispose and chain up to the @finalize method of the
+parent class.
+of properties. Overriding @dispatch_properties_changed should be rarely
+needed.
+final step of the object creation process.  At the point of the call, all
+construction properties have been set on the object.  The purpose of this
+call is to allow for object initialisation steps that can only be performed
+after construction properties have been set.  @constructed implementors
+should chain up to the @constructed call of their parent class to allow it
+to complete its initialisation.
+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;">
+      <field name="g_type_class">
+        <type name="TypeClass" c:type="GTypeClass"/>
+      </field>
+      <field name="construct_properties">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="constructor">
+        <callback name="constructor" c:type="constructor">
+          <return-value transfer-ownership="full">
+            <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="uint" 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" c:type="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="uint" 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" c:type="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="uint" 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" c:type="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" c:type="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"
+                  c:type="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="uint" 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" c:type="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" c:type="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="size_t" c:type="gsize"/>
+      </field>
+      <field name="pdummy">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="6">
+          <type name="any"/>
+        </array>
+      </field>
+      <method name="install_property"
+              c:identifier="g_object_class_install_property">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_property" c:identifier="g_object_class_find_property">
+        <return-value transfer-ownership="full">
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_properties"
+              c:identifier="g_object_class_list_properties">
+        <return-value transfer-ownership="full">
+          <array length="1" c:type="GParamSpec**">
+            <type name="ParamSpec"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="n_properties"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="override_property"
+              c:identifier="g_object_class_override_property">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ObjectConstructParam"
+            c:type="GObjectConstructParam"
+            doc="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.">
+      <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="The type of the @finalize function of #GObjectClass.">
+      <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>
+    <callback name="ObjectGetPropertyFunc"
+              c:type="GObjectGetPropertyFunc"
+              doc="g_object_class_install_property().
+The type of the @get_property function of #GObjectClass.">
+      <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="uint" 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>
+    <callback name="ObjectSetPropertyFunc"
+              c:type="GObjectSetPropertyFunc"
+              doc="g_object_class_install_property().
+The type of the @set_property function of #GObjectClass.">
+      <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="uint" 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>
+    <constant name="PARAM_MASK" value="255">
+      <type name="int"/>
+    </constant>
+    <constant name="PARAM_READWRITE" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="PARAM_STATIC_STRINGS" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="PARAM_USER_SHIFT" value="8">
+      <type name="int"/>
+    </constant>
+    <bitfield name="ParamFlags"
+              doc="strict validation is not required
+parameter is guaranteed to remain valid and
+unmodified for the lifetime of the parameter.
+Since 2.8
+parameter is guaranteed to remain valid and
+unmmodified for the lifetime of the parameter.
+Since 2.8
+parameter is guaranteed to remain valid and
+unmodified for the lifetime of the parameter.
+Since 2.8
+Through the #GParamFlags flag values, certain aspects of parameters
+can be configured."
+              c:type="GParamFlags">
+      <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"/>
+    </bitfield>
+    <record name="ParamSpec"
+            c:type="GParamSpec"
+            doc="All other fields of the &lt;structname&gt;GParamSpec&lt;/structname&gt; struct are private and
+should not be used directly.">
+      <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="uint" c:type="guint"/>
+      </field>
+      <field name="param_id" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <method name="ref" c:identifier="g_param_spec_ref">
+        <return-value transfer-ownership="full">
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="g_param_spec_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="sink" c:identifier="g_param_spec_sink">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="ref_sink" c:identifier="g_param_spec_ref_sink">
+        <return-value transfer-ownership="full">
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+      </method>
+      <method name="get_qdata" c:identifier="g_param_spec_get_qdata">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="quark" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qdata" c:identifier="g_param_spec_set_qdata">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="quark" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_qdata_full" c:identifier="g_param_spec_set_qdata_full">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="quark" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="steal_qdata" c:identifier="g_param_spec_steal_qdata">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="quark" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_redirect_target"
+              c:identifier="g_param_spec_get_redirect_target">
+        <return-value transfer-ownership="full">
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+      </method>
+      <method name="get_name" c:identifier="g_param_spec_get_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_nick" c:identifier="g_param_spec_get_nick">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_blurb" c:identifier="g_param_spec_get_blurb">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="ParamSpecBoolean"
+            c:type="GParamSpecBoolean"
+            doc="A #GParamSpec derived structure that contains the meta data for boolean properties.">
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+    </record>
+    <record name="ParamSpecBoxed"
+            c:type="GParamSpecBoxed"
+            doc="A #GParamSpec derived structure that contains the meta data for boxed properties.">
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+    </record>
+    <record name="ParamSpecChar"
+            c:type="GParamSpecChar"
+            doc="A #GParamSpec derived structure that contains the meta data for character properties.">
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="int8" c:type="gint8"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="int8" c:type="gint8"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="int8" c:type="gint8"/>
+      </field>
+      <method name="" c:identifier="g_param_spec_char">
+        <return-value transfer-ownership="full">
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <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="minimum" transfer-ownership="none">
+            <type name="int8" c:type="gint8"/>
+          </parameter>
+          <parameter name="maximum" transfer-ownership="none">
+            <type name="int8" c:type="gint8"/>
+          </parameter>
+          <parameter name="default_value" transfer-ownership="none">
+            <type name="int8" c:type="gint8"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="ParamFlags" c:type="GParamFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ParamSpecClass"
+            c:type="GParamSpecClass"
+            doc="up to the finalize method of the parent class.
+(recommended, the default is g_value_reset()), see
+g_param_value_set_default().
+specifications set out by this type (optional), see
+g_param_value_set_validate().
+(recommended, the default is memcmp()), see g_param_values_cmp().
+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().">
+      <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">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="value_set_default">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="value_validate">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="values_cmp">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="dummy" writable="1">
+        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
+          <type name="any"/>
+        </array>
+      </field>
+    </record>
+    <record name="ParamSpecDouble"
+            c:type="GParamSpecDouble"
+            doc="by g_param_values_cmp(); the default value is 1e-90.
+A #GParamSpec derived structure that contains the meta data for double properties.">
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="epsilon" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+    </record>
+    <record name="ParamSpecEnum"
+            c:type="GParamSpecEnum"
+            doc="A #GParamSpec derived structure that contains the meta data for enum
+properties.">
+      <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="int" c:type="gint"/>
+      </field>
+    </record>
+    <record name="ParamSpecFlags"
+            c:type="GParamSpecFlags"
+            doc="A #GParamSpec derived structure that contains the meta data for flags
+properties.">
+      <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="uint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="ParamSpecFloat"
+            c:type="GParamSpecFloat"
+            doc="by g_param_values_cmp(); the default value is 1e-30.
+A #GParamSpec derived structure that contains the meta data for float properties.">
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="epsilon" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </field>
+    </record>
+    <record name="ParamSpecGType"
+            c:type="GParamSpecGType"
+            doc="A #GParamSpec derived structure that contains the meta data for #GType properties."
+            version="2.10">
+      <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="A #GParamSpec derived structure that contains the meta data for integer properties.">
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+    </record>
+    <record name="ParamSpecInt64"
+            c:type="GParamSpecInt64"
+            doc="A #GParamSpec derived structure that contains the meta data for 64bit integer properties.">
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+    </record>
+    <record name="ParamSpecLong"
+            c:type="GParamSpecLong"
+            doc="A #GParamSpec derived structure that contains the meta data for long integer properties.">
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="long" c:type="glong"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="long" c:type="glong"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="long" c:type="glong"/>
+      </field>
+    </record>
+    <record name="ParamSpecObject"
+            c:type="GParamSpecObject"
+            doc="A #GParamSpec derived structure that contains the meta data for object properties.">
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+    </record>
+    <record name="ParamSpecOverride"
+            c:type="GParamSpecOverride"
+            doc="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."
+            version="2.4">
+      <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="A #GParamSpec derived structure that contains the meta data for %G_TYPE_PARAM
+properties.">
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+    </record>
+    <record name="ParamSpecPointer"
+            c:type="GParamSpecPointer"
+            doc="A #GParamSpec derived structure that contains the meta data for pointer properties.">
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+    </record>
+    <record name="ParamSpecPool" c:type="GParamSpecPool">
+      <constructor name="new" c:identifier="g_param_spec_pool_new">
+        <return-value transfer-ownership="full">
+          <type name="ParamSpecPool" c:type="GParamSpecPool*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type_prefixing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="insert" c:identifier="g_param_spec_pool_insert">
+        <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="owner_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove" c:identifier="g_param_spec_pool_remove">
+        <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>
+      </method>
+      <method name="lookup" c:identifier="g_param_spec_pool_lookup">
+        <return-value transfer-ownership="full">
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="param_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="owner_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="walk_ancestors" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_owned" c:identifier="g_param_spec_pool_list_owned">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="owner_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list" c:identifier="g_param_spec_pool_list">
+        <return-value transfer-ownership="full">
+          <type name="ParamSpec" c:type="GParamSpec**"/>
+        </return-value>
+        <parameters>
+          <parameter name="owner_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="n_pspecs_p"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ParamSpecString"
+            c:type="GParamSpecString"
+            doc="A #GParamSpec derived structure that contains the meta data for string
+properties.">
+      <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="int8" c:type="gchar"/>
+      </field>
+      <field name="null_fold_if_empty" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="ensure_non_null" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="ParamSpecTypeInfo"
+            c:type="GParamSpecTypeInfo"
+            doc="(recommended, the default is g_value_reset()), see
+g_param_value_set_default().
+specifications set out by @pspec (optional), see
+g_param_value_set_validate().
+(recommended, the default is memcmp()), see g_param_values_cmp().
+This structure is used to provide the type system with the information
+required to initialize and destruct (finalize) a parameter&apos;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().">
+      <field name="instance_size" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="n_preallocs" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="instance_init">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="value_type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="finalize">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="value_set_default">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="value_validate">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="values_cmp">
+        <type name="any" c:type="pointer"/>
+      </field>
+    </record>
+    <record name="ParamSpecUChar"
+            c:type="GParamSpecUChar"
+            doc="A #GParamSpec derived structure that contains the meta data for unsigned character properties.">
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <method name="" c:identifier="g_param_spec_uchar">
+        <return-value transfer-ownership="full">
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <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="minimum" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="maximum" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="default_value" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="ParamFlags" c:type="GParamFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ParamSpecUInt"
+            c:type="GParamSpecUInt"
+            doc="A #GParamSpec derived structure that contains the meta data for unsigned integer properties.">
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="ParamSpecUInt64"
+            c:type="GParamSpecUInt64"
+            doc="A #GParamSpec derived structure that contains the meta data for unsigned 64bit integer properties.">
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="uint64" c:type="guint64"/>
+      </field>
+    </record>
+    <record name="ParamSpecULong"
+            c:type="GParamSpecULong"
+            doc="A #GParamSpec derived structure that contains the meta data for unsigned long integer properties.">
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="minimum" writable="1">
+        <type name="ulong" c:type="gulong"/>
+      </field>
+      <field name="maximum" writable="1">
+        <type name="ulong" c:type="gulong"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="ulong" c:type="gulong"/>
+      </field>
+    </record>
+    <record name="ParamSpecUnichar"
+            c:type="GParamSpecUnichar"
+            doc="A #GParamSpec derived structure that contains the meta data for unichar (unsigned integer) properties.">
+      <field name="parent_instance" writable="1">
+        <type name="ParamSpec" c:type="GParamSpec"/>
+      </field>
+      <field name="default_value" writable="1">
+        <type name="GLib.unichar" c:type="gunichar"/>
+      </field>
+      <method name="" c:identifier="g_param_spec_unichar">
+        <return-value transfer-ownership="full">
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <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="default_value" transfer-ownership="none">
+            <type name="GLib.unichar" c:type="gunichar"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="ParamFlags" c:type="GParamFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ParamSpecValueArray"
+            c:type="GParamSpecValueArray"
+            doc="A #GParamSpec derived structure that contains the meta data for #GValueArray properties.">
+      <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="uint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="Parameter"
+            c:type="GParameter"
+            doc="The &lt;structname&gt;GParameter&lt;/structname&gt; struct is an auxiliary structure used
+to hand parameter name/value pairs to g_object_newv().">
+      <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 c:type="GPtrArray"
+                glib:name="PtrArray"
+                glib:type-name="GPtrArray"
+                glib:get-type="g_ptr_array_get_type">
+    </glib:boxed>
+    <glib:boxed c:type="GRegex"
+                glib:name="Regex"
+                glib:type-name="GRegex"
+                glib:get-type="g_regex_get_type">
+    </glib:boxed>
+    <constant name="SIGNAL_FLAGS_MASK" value="127">
+      <type name="int"/>
+    </constant>
+    <constant name="SIGNAL_MATCH_MASK" value="63">
+      <type name="int"/>
+    </constant>
+    <callback name="SignalAccumulator"
+              c:type="GSignalAccumulator"
+              doc="is the return value of the current signal emission.
+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.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ihint" transfer-ownership="none">
+          <type name="SignalInvocationHint" c:type="GSignalInvocationHint*"/>
+        </parameter>
+        <parameter name="return_accu" transfer-ownership="none">
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="handler_return" transfer-ownership="none">
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="SignalEmissionHook"
+              c:type="GSignalEmissionHook"
+              doc="the instance on which the signal was emitted.
+parameters of the emission.
+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).">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ihint" transfer-ownership="none">
+          <type name="SignalInvocationHint" c:type="GSignalInvocationHint*"/>
+        </parameter>
+        <parameter name="n_param_values" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_values" transfer-ownership="none">
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="SignalFlags"
+              doc="emission for this very object will not be emitted recursively,
+but instead cause the first emission to be restarted.
+upon handler connections and emissions.
+objects from user code via g_signal_emit() and friends, without
+the need of being embedded into extra code that performs pre or
+post emission adjustments on the object. They can also be thought
+of as object methods which can be called generically by
+third-party code.
+The signal flags are used to specify a signal&apos;s behaviour, the overall
+signal description outlines how especially the RUN flags control the
+stages of a signal emission."
+              c:type="GSignalFlags">
+      <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="field will contain one of %G_SIGNAL_RUN_FIRST,
+%G_SIGNAL_RUN_LAST or %G_SIGNAL_RUN_CLEANUP.
+The #GSignalInvocationHint structure is used to pass on additional information
+to callbacks during a signal emission.">
+      <field name="signal_id" writable="1">
+        <type name="uint" 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"
+              doc="The match types specify what g_signal_handlers_block_matched(),
+g_signal_handlers_unblock_matched() and g_signal_handlers_disconnect_matched()
+match signals by."
+              c:type="GSignalMatchType">
+      <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="signal to be queried was unknown.
+effective callback signature is:
+&lt;programlisting&gt;
+[#param_types param_names,]
+#gpointer     data2);
+&lt;/programlisting&gt;
+A structure holding in-depth information for a specific signal. It is
+filled in by the g_signal_query() function.">
+      <field name="signal_id" writable="1">
+        <type name="uint" 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="uint" c:type="guint"/>
+      </field>
+      <field name="param_types" writable="1">
+        <type name="any" c:type="GType*"/>
+      </field>
+    </record>
+    <glib:boxed c:type="GString"
+                glib:name="String"
+                glib:type-name="GString"
+                glib:get-type="g_gstring_get_type">
+    </glib:boxed>
+    <glib:boxed c:type="GStrv"
+                glib:name="Strv"
+                glib:type-name="GStrv"
+                glib:get-type="g_strv_get_type">
+    </glib:boxed>
+    <constant name="TYPE_FUNDAMENTAL_MAX" value="255">
+      <type name="int"/>
+    </constant>
+    <constant name="TYPE_FUNDAMENTAL_SHIFT" value="2">
+      <type name="int"/>
+    </constant>
+    <constant name="TYPE_RESERVED_BSE_FIRST" value="32">
+      <type name="int"/>
+    </constant>
+    <constant name="TYPE_RESERVED_BSE_LAST" value="48">
+      <type name="int"/>
+    </constant>
+    <constant name="TYPE_RESERVED_GLIB_FIRST" value="21">
+      <type name="int"/>
+    </constant>
+    <constant name="TYPE_RESERVED_GLIB_LAST" value="31">
+      <type name="int"/>
+    </constant>
+    <constant name="TYPE_RESERVED_USER_FIRST" value="49">
+      <type name="int"/>
+    </constant>
+    <callback name="ToggleNotify"
+              c:type="GToggleNotify"
+              doc="last reference to the object. %FALSE if the toggle
+reference was the last reference and there are now other
+references.
+A callback function used for notification when the state
+of a toggle reference changes. See g_object_add_toggle_ref().">
+      <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="gpointer"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none" doc="was called.">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="is_last_ref" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <union name="TypeCValue" c:type="GTypeCValue">
+      <field name="v_int" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="v_long" writable="1">
+        <type name="long" c:type="glong"/>
+      </field>
+      <field name="v_int64" writable="1">
+        <type name="int64" c:type="gint64"/>
+      </field>
+      <field name="v_double" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="v_pointer" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+    </union>
+    <record name="TypeClass"
+            c:type="GTypeClass"
+            doc="An opaque structure used as the base of all classes.">
+      <field name="g_type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <method name="get_private" c:identifier="g_type_class_get_private">
+        <return-value transfer-ownership="none">
+          <type name="any" 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="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.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="cache_data" transfer-ownership="none" doc="call">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="g_class" transfer-ownership="none">
+          <type name="TypeClass" c:type="GTypeClass*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="TypeDebugFlags"
+              doc="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 &apos;:&apos;-separated list of
+&quot;objects&quot; and &quot;signals&quot;."
+              c:type="GTypeDebugFlags">
+      <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"
+              doc="created for an abstract type.
+that introduces a value table, but can&apos;t be used for
+g_value_init().
+Bit masks used to check or determine characteristics of a type."
+              c:type="GTypeFlags">
+      <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"
+              doc="Bit masks used to check or determine specific characteristics of a
+fundamental type."
+              c:type="GTypeFundamentalFlags">
+      <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="A structure that provides information to the type system which is
+used specifically for managing fundamental types.">
+      <field name="type_flags" writable="1">
+        <type name="TypeFundamentalFlags" c:type="GTypeFundamentalFlags"/>
+      </field>
+    </record>
+    <record name="TypeInfo"
+            c:type="GTypeInfo"
+            doc="classed and instantiatable types. Location of the default vtable
+inititalization function for interface types. (optional) This function
+is used both to fill in virtual functions in the class or default vtable,
+and to do type-specific setup such as registering signals and object
+properties.
+classed and instantiatable types. Location fo the default vtable
+finalization function for interface types. (optional)
+useful for fundamental types).
+This structure is used to provide the type system with the information
+required to initialize and destruct (finalize) a type&apos;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().">
+      <field name="class_size" writable="1">
+        <type name="uint16" 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="any" c:type="gconstpointer"/>
+      </field>
+      <field name="instance_size" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="n_preallocs" writable="1">
+        <type name="uint16" 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="An opaque structure used as the base of all type instances.">
+      <field name="g_class" writable="1">
+        <type name="TypeClass" c:type="GTypeClass*"/>
+      </field>
+      <method name="get_private" c:identifier="g_type_instance_get_private">
+        <return-value transfer-ownership="none">
+          <type name="any" 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="An opaque structure used as the base of all interface types.">
+      <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"
+              doc="A callback called after an interface vtable is initialized.
+See g_type_add_interface_check()."
+              version="2.4">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="check_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="g_iface" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="TypeModule"
+           c:type="GTypeModule"
+           doc="The members of the &lt;structname&gt;GTypeModule&lt;/structname&gt; structure should not
+be accessed directly, except for the @name field."
+           parent="Object"
+           abstract="1"
+           glib:type-name="GTypeModule"
+           glib:get-type="g_type_module_get_type"
+           glib:type-struct="TypeModuleClass">
+      <implements name="TypePlugin"/>
+      <virtual-method name="load">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="use" c:identifier="g_type_module_use">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="unuse" c:identifier="g_type_module_unuse">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_name" c:identifier="g_type_module_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="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="register_type" c:identifier="g_type_module_register_type">
+        <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="type_info" transfer-ownership="none">
+            <type name="TypeInfo" c:type="GTypeInfo*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="TypeFlags" c:type="GTypeFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_interface" c:identifier="g_type_module_add_interface">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="instance_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="interface_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="interface_info" transfer-ownership="none">
+            <type name="InterfaceInfo" c:type="GInterfaceInfo*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="register_enum" c:identifier="g_type_module_register_enum">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="const_static_values" transfer-ownership="none">
+            <type name="EnumValue" c:type="GEnumValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="register_flags"
+              c:identifier="g_type_module_register_flags">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="const_static_values" transfer-ownership="none">
+            <type name="FlagsValue" c:type="GFlagsValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="Object" c:type="GObject"/>
+      </field>
+      <field name="use_count">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="type_infos">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="interface_infos">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </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="g_type_module_register_type().
+In order to implement dynamic loading of types based on #GTypeModule,
+the @load and @unload functions in #GTypeModuleClass must be implemented.">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="load">
+        <callback name="load" c:type="load">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="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" c:type="reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="reserved2">
+        <callback name="reserved2" c:type="reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="reserved3">
+        <callback name="reserved3" c:type="reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="reserved4">
+        <callback name="reserved4" c:type="reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <interface name="TypePlugin"
+               c:type="GTypePlugin"
+               doc="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."
+               glib:type-name="GTypePlugin"
+               glib:get-type="g_type_plugin_get_type"
+               glib:type-struct="TypePluginClass">
+      <method name="use" c:identifier="g_type_plugin_use">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unuse" c:identifier="g_type_plugin_unuse">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="complete_type_info"
+              c:identifier="g_type_plugin_complete_type_info">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="g_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="info" transfer-ownership="none">
+            <type name="TypeInfo" c:type="GTypeInfo*"/>
+          </parameter>
+          <parameter name="value_table" transfer-ownership="none">
+            <type name="TypeValueTable" c:type="GTypeValueTable*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="complete_interface_info"
+              c:identifier="g_type_plugin_complete_interface_info">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="instance_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="interface_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="info" transfer-ownership="none">
+            <type name="InterfaceInfo" c:type="GInterfaceInfo*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="TypePluginClass"
+            c:type="GTypePluginClass"
+            glib:is-gtype-struct-for="TypePlugin"
+            doc="#GTypeValueTable structs for the type. The structs are initialized
+with &lt;literal&gt;memset(s, 0, sizeof (s))&lt;/literal&gt; before calling
+this function.
+for the interface. The structs is initialized with
+&lt;literal&gt;memset(s, 0, sizeof (s))&lt;/literal&gt; before calling
+this function.
+The #GTypePlugin interface is used by the type system in order to handle
+the lifecycle of dynamically loaded types.">
+      <field name="base_iface">
+        <type name="TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="use_plugin">
+        <type name="TypePluginUse" c:type="GTypePluginUse"/>
+      </field>
+      <field name="unuse_plugin">
+        <type name="TypePluginUnuse" c:type="GTypePluginUnuse"/>
+      </field>
+      <field name="complete_type_info">
+        <type name="TypePluginCompleteTypeInfo"
+              c:type="GTypePluginCompleteTypeInfo"/>
+      </field>
+      <field name="complete_interface_info">
+        <type name="TypePluginCompleteInterfaceInfo"
+              c:type="GTypePluginCompleteInterfaceInfo"/>
+      </field>
+    </record>
+    <callback name="TypePluginCompleteInterfaceInfo"
+              c:type="GTypePluginCompleteInterfaceInfo"
+              doc="is added
+The type of the @complete_interface_info function of #GTypePluginClass.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <type name="TypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+        <parameter name="instance_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="interface_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="info" transfer-ownership="none">
+          <type name="InterfaceInfo" c:type="GInterfaceInfo*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="TypePluginCompleteTypeInfo"
+              c:type="GTypePluginCompleteTypeInfo"
+              doc="The type of the @complete_type_info function of #GTypePluginClass.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <type name="TypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+        <parameter name="g_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="info" transfer-ownership="none">
+          <type name="TypeInfo" c:type="GTypeInfo*"/>
+        </parameter>
+        <parameter name="value_table" transfer-ownership="none">
+          <type name="TypeValueTable" c:type="GTypeValueTable*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="TypePluginUnuse"
+              c:type="GTypePluginUnuse"
+              doc="The type of the @unuse_plugin function of #GTypePluginClass.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <type name="TypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="TypePluginUse"
+              c:type="GTypePluginUse"
+              doc="The type of the @use_plugin function of #GTypePluginClass, which gets called
+to increase the use count of @plugin.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="plugin" transfer-ownership="none">
+          <type name="TypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TypeQuery"
+            c:type="GTypeQuery"
+            doc="A structure holding information for a specific type. It is
+filled in by the g_type_query() function.">
+      <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="uint" c:type="guint"/>
+      </field>
+      <field name="instance_size" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="TypeValueTable"
+            c:type="GTypeValueTable"
+            doc="directly into the value-&gt;data array. The data array of
+the #GValue passed into this function was zero-filled
+with &lt;function&gt;memset()&lt;/function&gt;, so no care has to
+be taken to free any
+old contents. E.g. for the implementation of a string
+value that may never be %NULL, the implementation might
+look like:
+|[
+value-&gt;data[0].v_pointer = g_strdup (&quot;&quot;);
+]|
+data array of the passed in @value. No resources may
+remain allocated through the #GValue contents after
+this function returns. E.g. for our above string type:
+|[
+// only free strings without a specific flag for static storage
+if (!(value-&gt;data[1].v_uint &amp; G_VALUE_NOCOPY_CONTENTS))
+g_free (value-&gt;data[0].v_pointer);
+]|
+and @src_value is a properly setup #GValue of same or
+derived type.
+The purpose of this function is to copy the contents of
+remain valid. String type example:
+|[
+dest_value-&gt;data[0].v_pointer = g_strdup (src_value-&gt;data[0].v_pointer);
+]|
+or strings, return this pointer, so the caller can peek at
+the current contents. To extend on our above string example:
+|[
+return value-&gt;data[0].v_pointer;
+]|
+this value bit-by-bit. Each character in the format represents
+an argument to be collected, and the characters themselves indicate
+the type of the argument. Currently supported arguments are:
+&lt;variablelist&gt;
+&lt;varlistentry&gt;&lt;term /&gt;&lt;listitem&gt;&lt;para&gt;
+&apos;i&apos; - Integers. passed as collect_values[].v_int.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term /&gt;&lt;listitem&gt;&lt;para&gt;
+&apos;l&apos; - Longs. passed as collect_values[].v_long.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term /&gt;&lt;listitem&gt;&lt;para&gt;
+&apos;d&apos; - Doubles. passed as collect_values[].v_double.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term /&gt;&lt;listitem&gt;&lt;para&gt;
+&apos;p&apos; - Pointers. passed as collect_values[].v_pointer.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;/variablelist&gt;
+It should be noted that for variable argument list construction,
+ANSI C promotes every type smaller than an integer to an int, and
+floats to doubles. So for collection of short int or char, &apos;i&apos;
+needs to be used, and for collection of floats &apos;d&apos;.
+values collected from a variable argument list into contents
+suitable for storage in a GValue. This function should setup
+does not allow %NULL pointers, it needs to either spew an error,
+or do an implicit conversion by storing an empty string.
+The @value passed in to this function has a zero-filled data
+array, so just like for value_init() it is guaranteed to not
+contain any old contents that might need freeing.
+and @collect_values is an array of unions #GTypeCValue with
+length @n_collect_values, containing the collected values
+according to @collect_format.
+It may contain the flag %G_VALUE_NOCOPY_CONTENTS indicating,
+that the collected value contents may be considered &quot;static&quot;
+for the duration of the @value lifetime.
+Thus an extra copy of the contents stored in @collect_values is
+not required for assignment to @value.
+For our above string example, we continue with:
+|[
+if (!collect_values[0].v_pointer)
+value-&gt;data[0].v_pointer = g_strdup (&quot;&quot;);
+else if (collect_flags &amp; G_VALUE_NOCOPY_CONTENTS)
+{
+value-&gt;data[0].v_pointer = collect_values[0].v_pointer;
+// keep a flag for the value_free() implementation to not free this string
+value-&gt;data[1].v_uint = G_VALUE_NOCOPY_CONTENTS;
+}
+else
+value-&gt;data[0].v_pointer = g_strdup (collect_values[0].v_pointer);
+return NULL;
+]|
+It should be noted, that it is generally a bad idea to follow the
+#G_VALUE_NOCOPY_CONTENTS hint for reference counted types. Due to
+reentrancy requirements and reference count assertions performed
+by the #GSignal code, reference counts should always be incremented
+for reference counted contents stored in the value-&gt;data array.
+To deviate from our string example for a moment, and taking a look
+at an exemplary implementation for collect_value() of #GObject:
+|[
+if (collect_values[0].v_pointer)
+{
+GObject *object = G_OBJECT (collect_values[0].v_pointer);
+// never honour G_VALUE_NOCOPY_CONTENTS for ref-counted types
+value-&gt;data[0].v_pointer = g_object_ref (object);
+return NULL;
+}
+else
+return g_strdup_printf (&quot;Object passed as invalid NULL pointer&quot;);
+}
+]|
+The reference count for valid objects is always incremented,
+regardless of @collect_flags. For invalid objects, the example
+returns a newly allocated string without altering @value.
+Upon success, collect_value() needs to return %NULL. If, however,
+an error condition occurred, collect_value() may spew an
+error by returning a newly allocated non-%NULL string, giving
+a suitable description of the error condition.
+The calling code makes no assumptions about the @value
+contents being valid upon error returns, @value
+is simply thrown away without further freeing. As such, it is
+a good idea to not allocate #GValue contents, prior to returning
+an error, however, collect_values() is not obliged to return
+a correctly setup @value for error returns, simply because
+any non-%NULL return is considered a fatal condition so further
+program behaviour is undefined.
+analogous to @collect_format. Usually, @lcopy_format string consists
+only of &apos;p&apos;s to provide lcopy_value() with pointers to storage locations.
+arguments passed through a variable argument list which got
+collected into @collect_values according to @lcopy_format.
+and @collect_flags may contain %G_VALUE_NOCOPY_CONTENTS.
+In contrast to collect_value(), lcopy_value() is obliged to
+always properly support %G_VALUE_NOCOPY_CONTENTS.
+Similar to collect_value() the function may prematurely abort
+by returning a newly allocated string describing an error condition.
+To complete the string example:
+|[
+gchar **string_p = collect_values[0].v_pointer;
+if (!string_p)
+return g_strdup_printf (&quot;string location passed as NULL&quot;);
+if (collect_flags &amp; G_VALUE_NOCOPY_CONTENTS)
+*string_p = value-&gt;data[0].v_pointer;
+else
+*string_p = g_strdup (value-&gt;data[0].v_pointer);
+]|
+And an illustrative version of lcopy_value() for
+reference-counted types:
+|[
+GObject **object_p = collect_values[0].v_pointer;
+if (!object_p)
+return g_strdup_printf (&quot;object location passed as NULL&quot;);
+if (!value-&gt;data[0].v_pointer)
+*object_p = NULL;
+else if (collect_flags &amp; G_VALUE_NOCOPY_CONTENTS) // always honour
+*object_p = value-&gt;data[0].v_pointer;
+else
+*object_p = g_object_ref (value-&gt;data[0].v_pointer);
+return NULL;
+]|
+The #GTypeValueTable provides the functions required by the #GValue implementation,
+to serve as a container for values of a type.">
+      <field name="value_init">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="value_free">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="value_copy">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="value_peek_pointer">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="collect_format" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="collect_value">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="lcopy_format" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="lcopy_value">
+        <type name="any" c:type="pointer"/>
+      </field>
+    </record>
+    <constant name="VALUE_COLLECT_FORMAT_MAX_LENGTH" value="8">
+      <type name="int"/>
+    </constant>
+    <constant name="VALUE_NOCOPY_CONTENTS" value="134217728">
+      <type name="int"/>
+    </constant>
+    <record name="Value"
+            c:type="GValue"
+            doc="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."
+            glib:type-name="GValue"
+            glib:get-type="g_value_get_type">
+      <field name="g_type" writable="1">
+        <type name="GType" c:type="GType"/>
+      </field>
+      <field name="data" writable="1">
+        <array zero-terminated="0" c:type="any" fixed-size="2">
+          <type name="any"/>
+        </array>
+      </field>
+      <method name="set_boxed" c:identifier="g_value_set_boxed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_boxed" transfer-ownership="none">
+            <type name="any" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_static_boxed" c:identifier="g_value_set_static_boxed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_boxed" transfer-ownership="none">
+            <type name="any" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boxed" c:identifier="g_value_get_boxed">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="dup_boxed" c:identifier="g_value_dup_boxed">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="take_boxed" c:identifier="g_value_take_boxed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_boxed" transfer-ownership="none">
+            <type name="any" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_boxed_take_ownership"
+              c:identifier="g_value_set_boxed_take_ownership">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_boxed" transfer-ownership="none">
+            <type name="any" c:type="gconstpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_enum" c:identifier="g_value_set_enum">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_enum" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_enum" c:identifier="g_value_get_enum">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_flags" c:identifier="g_value_set_flags">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_flags" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_flags" c:identifier="g_value_get_flags">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="init" c:identifier="g_value_init">
+        <return-value transfer-ownership="full">
+          <type name="Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="g_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy" c:identifier="g_value_copy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest_value" transfer-ownership="none">
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reset" c:identifier="g_value_reset">
+        <return-value transfer-ownership="full">
+          <type name="Value" c:type="GValue*"/>
+        </return-value>
+      </method>
+      <method name="unset" c:identifier="g_value_unset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_instance" c:identifier="g_value_set_instance">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="instance" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="fits_pointer" c:identifier="g_value_fits_pointer">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="peek_pointer" c:identifier="g_value_peek_pointer">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="transform" c:identifier="g_value_transform">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest_value" transfer-ownership="none">
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_param" c:identifier="g_value_set_param">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <type name="ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_param" c:identifier="g_value_get_param">
+        <return-value transfer-ownership="full">
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+      </method>
+      <method name="dup_param" c:identifier="g_value_dup_param">
+        <return-value transfer-ownership="full">
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+      </method>
+      <method name="take_param" c:identifier="g_value_take_param">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <type name="ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_param_take_ownership"
+              c:identifier="g_value_set_param_take_ownership">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="param" transfer-ownership="none">
+            <type name="ParamSpec" c:type="GParamSpec*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_object" c:identifier="g_value_set_object">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object" c:identifier="g_value_get_object">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="dup_object" c:identifier="g_value_dup_object">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="take_object" c:identifier="g_value_take_object">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_object_take_ownership"
+              c:identifier="g_value_set_object_take_ownership">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_char" c:identifier="g_value_set_char">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_char" transfer-ownership="none">
+            <type name="int8" c:type="gchar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_char" c:identifier="g_value_get_char">
+        <return-value transfer-ownership="none">
+          <type name="int8" c:type="gchar"/>
+        </return-value>
+      </method>
+      <method name="set_uchar" c:identifier="g_value_set_uchar">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_uchar" transfer-ownership="none">
+            <type name="uint8" c:type="guchar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uchar" c:identifier="g_value_get_uchar">
+        <return-value transfer-ownership="none">
+          <type name="uint8" c:type="guchar"/>
+        </return-value>
+      </method>
+      <method name="set_boolean" c:identifier="g_value_set_boolean">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_boolean" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_boolean" c:identifier="g_value_get_boolean">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_int" c:identifier="g_value_set_int">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_int" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int" c:identifier="g_value_get_int">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_uint" c:identifier="g_value_set_uint">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_uint" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint" c:identifier="g_value_get_uint">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_long" c:identifier="g_value_set_long">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_long" transfer-ownership="none">
+            <type name="long" c:type="glong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_long" c:identifier="g_value_get_long">
+        <return-value transfer-ownership="none">
+          <type name="long" c:type="glong"/>
+        </return-value>
+      </method>
+      <method name="set_ulong" c:identifier="g_value_set_ulong">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_ulong" transfer-ownership="none">
+            <type name="ulong" c:type="gulong"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ulong" c:identifier="g_value_get_ulong">
+        <return-value transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </return-value>
+      </method>
+      <method name="set_int64" c:identifier="g_value_set_int64">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_int64" transfer-ownership="none">
+            <type name="int64" c:type="gint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int64" c:identifier="g_value_get_int64">
+        <return-value transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </return-value>
+      </method>
+      <method name="set_uint64" c:identifier="g_value_set_uint64">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_uint64" transfer-ownership="none">
+            <type name="uint64" c:type="guint64"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uint64" c:identifier="g_value_get_uint64">
+        <return-value transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </return-value>
+      </method>
+      <method name="set_float" c:identifier="g_value_set_float">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_float" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_float" c:identifier="g_value_get_float">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="set_double" c:identifier="g_value_set_double">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_double" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double" c:identifier="g_value_get_double">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_string" c:identifier="g_value_set_string">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_static_string"
+              c:identifier="g_value_set_static_string">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string" c:identifier="g_value_get_string">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="dup_string" c:identifier="g_value_dup_string">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_pointer" c:identifier="g_value_set_pointer">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_pointer" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pointer" c:identifier="g_value_get_pointer">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="set_gtype" c:identifier="g_value_set_gtype">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_gtype" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_gtype" c:identifier="g_value_get_gtype">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="take_string" c:identifier="g_value_take_string">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_string" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_string_take_ownership"
+              c:identifier="g_value_set_string_take_ownership">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="v_string" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="ValueArray"
+            c:type="GValueArray"
+            doc="A #GValueArray contains an array of #GValue elements."
+            glib:type-name="GValueArray"
+            glib:get-type="g_value_array_get_type">
+      <field name="n_values" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="values" writable="1">
+        <type name="Value" c:type="GValue*"/>
+      </field>
+      <field name="n_prealloced" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <constructor name="new" c:identifier="g_value_array_new">
+        <return-value transfer-ownership="full">
+          <type name="ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_prealloced" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_nth" c:identifier="g_value_array_get_nth">
+        <return-value transfer-ownership="full">
+          <type name="Value" c:type="GValue*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free" c:identifier="g_value_array_free">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="copy" c:identifier="g_value_array_copy">
+        <return-value transfer-ownership="full">
+          <type name="ValueArray" c:type="GValueArray*"/>
+        </return-value>
+      </method>
+      <method name="prepend" c:identifier="g_value_array_prepend">
+        <return-value transfer-ownership="full">
+          <type name="ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append" c:identifier="g_value_array_append">
+        <return-value transfer-ownership="full">
+          <type name="ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert" c:identifier="g_value_array_insert">
+        <return-value transfer-ownership="full">
+          <type name="ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove" c:identifier="g_value_array_remove">
+        <return-value transfer-ownership="full">
+          <type name="ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sort" c:identifier="g_value_array_sort">
+        <return-value transfer-ownership="full">
+          <type name="ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="compare_func"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sort_with_data"
+              c:identifier="g_value_array_sort_with_data">
+        <return-value transfer-ownership="full">
+          <type name="ValueArray" c:type="GValueArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="compare_func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <callback name="ValueTransform"
+              c:type="GValueTransform"
+              doc="The type of value transformation functions which can be registered with
+g_value_register_transform_func().">
+      <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>
+    <callback name="WeakNotify"
+              c:type="GWeakNotify"
+              doc="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&apos;s not much you could do
+with the object, apart from e.g. using its adress as hash-index or the like.">
+      <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="gpointer"/>
+        </parameter>
+        <parameter name="where_the_object_was" transfer-ownership="none">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <function name="boxed_copy" c:identifier="g_boxed_copy">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="src_boxed" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="boxed_free" c:identifier="g_boxed_free">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="boxed_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="boxed" transfer-ownership="none">
+          <type name="any" 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">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="boxed_copy" transfer-ownership="none" scope="call">
+          <type name="BoxedCopyFunc" c:type="GBoxedCopyFunc"/>
+        </parameter>
+        <parameter name="boxed_free" transfer-ownership="none" scope="call">
+          <type name="BoxedFreeFunc" c:type="GBoxedFreeFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_new" c:identifier="g_cclosure_new">
+      <return-value transfer-ownership="full">
+        <type name="Closure" c:type="GClosure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="callback_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="1">
+          <type name="Callback" c:type="GCallback"/>
+        </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="ClosureNotify" c:type="GClosureNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_new_object" c:identifier="g_cclosure_new_object">
+      <return-value transfer-ownership="full">
+        <type name="Closure" c:type="GClosure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="callback_func" transfer-ownership="none" scope="call">
+          <type name="Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_new_object_swap"
+              c:identifier="g_cclosure_new_object_swap">
+      <return-value transfer-ownership="full">
+        <type name="Closure" c:type="GClosure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="callback_func" transfer-ownership="none" scope="call">
+          <type name="Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="cclosure_new_swap" c:identifier="g_cclosure_new_swap">
+      <return-value transfer-ownership="full">
+        <type name="Closure" c:type="GClosure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="callback_func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="1">
+          <type name="Callback" c:type="GCallback"/>
+        </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="ClosureNotify" c:type="GClosureNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="enum_complete_type_info"
+              c:identifier="g_enum_complete_type_info">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_enum_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="info" transfer-ownership="none">
+          <type name="TypeInfo" c:type="GTypeInfo*"/>
+        </parameter>
+        <parameter name="const_values" transfer-ownership="none">
+          <type name="EnumValue" c:type="GEnumValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="enum_get_value" c:identifier="g_enum_get_value">
+      <return-value transfer-ownership="full">
+        <type name="EnumValue" c:type="GEnumValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="enum_class" transfer-ownership="none">
+          <type name="EnumClass" c:type="GEnumClass*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="enum_get_value_by_name"
+              c:identifier="g_enum_get_value_by_name">
+      <return-value transfer-ownership="full">
+        <type name="EnumValue" c:type="GEnumValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="enum_class" transfer-ownership="none">
+          <type name="EnumClass" c:type="GEnumClass*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="enum_get_value_by_nick"
+              c:identifier="g_enum_get_value_by_nick">
+      <return-value transfer-ownership="full">
+        <type name="EnumValue" c:type="GEnumValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="enum_class" transfer-ownership="none">
+          <type name="EnumClass" c:type="GEnumClass*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="enum_register_static"
+              c:identifier="g_enum_register_static">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="const_static_values" transfer-ownership="none">
+          <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">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_flags_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="info" transfer-ownership="none">
+          <type name="TypeInfo" c:type="GTypeInfo*"/>
+        </parameter>
+        <parameter name="const_values" transfer-ownership="none">
+          <type name="FlagsValue" c:type="GFlagsValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flags_get_first_value"
+              c:identifier="g_flags_get_first_value">
+      <return-value transfer-ownership="full">
+        <type name="FlagsValue" c:type="GFlagsValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags_class" transfer-ownership="none">
+          <type name="FlagsClass" c:type="GFlagsClass*"/>
+        </parameter>
+        <parameter name="value" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flags_get_value_by_name"
+              c:identifier="g_flags_get_value_by_name">
+      <return-value transfer-ownership="full">
+        <type name="FlagsValue" c:type="GFlagsValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags_class" transfer-ownership="none">
+          <type name="FlagsClass" c:type="GFlagsClass*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flags_get_value_by_nick"
+              c:identifier="g_flags_get_value_by_nick">
+      <return-value transfer-ownership="full">
+        <type name="FlagsValue" c:type="GFlagsValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags_class" transfer-ownership="none">
+          <type name="FlagsClass" c:type="GFlagsClass*"/>
+        </parameter>
+        <parameter name="nick" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="flags_register_static"
+              c:identifier="g_flags_register_static">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="const_static_values" transfer-ownership="none">
+          <type name="FlagsValue" c:type="GFlagsValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_boolean" c:identifier="g_param_spec_boolean">
+      <return-value transfer-ownership="full">
+        <type name="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="default_value" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_boxed" c:identifier="g_param_spec_boxed">
+      <return-value transfer-ownership="full">
+        <type name="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="boxed_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_double" c:identifier="g_param_spec_double">
+      <return-value transfer-ownership="full">
+        <type name="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="minimum" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_enum" c:identifier="g_param_spec_enum">
+      <return-value transfer-ownership="full">
+        <type name="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="enum_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_flags" c:identifier="g_param_spec_flags">
+      <return-value transfer-ownership="full">
+        <type name="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="flags_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_float" c:identifier="g_param_spec_float">
+      <return-value transfer-ownership="full">
+        <type name="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="minimum" transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_gtype" c:identifier="g_param_spec_gtype">
+      <return-value transfer-ownership="full">
+        <type name="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="is_a_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_int" c:identifier="g_param_spec_int">
+      <return-value transfer-ownership="full">
+        <type name="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="minimum" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_int64" c:identifier="g_param_spec_int64">
+      <return-value transfer-ownership="full">
+        <type name="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="minimum" transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <type name="int64" c:type="gint64"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_internal" c:identifier="g_param_spec_internal">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="param_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <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="flags" transfer-ownership="none">
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_long" c:identifier="g_param_spec_long">
+      <return-value transfer-ownership="full">
+        <type name="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="minimum" transfer-ownership="none">
+          <type name="long" c:type="glong"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <type name="long" c:type="glong"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <type name="long" c:type="glong"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_object" c:identifier="g_param_spec_object">
+      <return-value transfer-ownership="full">
+        <type name="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="object_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_override" c:identifier="g_param_spec_override">
+      <return-value transfer-ownership="full">
+        <type name="ParamSpec" c:type="GParamSpec*"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="overridden" transfer-ownership="none">
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_param" c:identifier="g_param_spec_param">
+      <return-value transfer-ownership="full">
+        <type name="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="param_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_pointer" c:identifier="g_param_spec_pointer">
+      <return-value transfer-ownership="full">
+        <type name="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="flags" transfer-ownership="none">
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_string" c:identifier="g_param_spec_string">
+      <return-value transfer-ownership="full">
+        <type name="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="default_value" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <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_uint" c:identifier="g_param_spec_uint">
+      <return-value transfer-ownership="full">
+        <type name="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="minimum" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_uint64" c:identifier="g_param_spec_uint64">
+      <return-value transfer-ownership="full">
+        <type name="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="minimum" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <type name="uint64" c:type="guint64"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_ulong" c:identifier="g_param_spec_ulong">
+      <return-value transfer-ownership="full">
+        <type name="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="minimum" transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="maximum" transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="default_value" transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="ParamFlags" c:type="GParamFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_spec_value_array"
+              c:identifier="g_param_spec_value_array">
+      <return-value transfer-ownership="full">
+        <type name="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="element_spec" transfer-ownership="none">
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <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">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="pspec_info" transfer-ownership="none">
+          <type name="ParamSpecTypeInfo" c:type="GParamSpecTypeInfo*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_value_convert" c:identifier="g_param_value_convert">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pspec" transfer-ownership="none">
+          <type name="ParamSpec" c:type="GParamSpec*"/>
+        </parameter>
+        <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>
+        <parameter name="strict_validation" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="param_value_defaults"
+              c:identifier="g_param_value_defaults">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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>
+    </function>
+    <function name="param_value_set_default"
+              c:identifier="g_param_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>
+    </function>
+    <function name="param_value_validate"
+              c:identifier="g_param_value_validate">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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>
+    </function>
+    <function name="param_values_cmp" c:identifier="g_param_values_cmp">
+      <return-value transfer-ownership="none">
+        <type name="int" 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>
+    </function>
+    <function name="pointer_type_register_static"
+              c:identifier="g_pointer_type_register_static">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_accumulator_true_handled"
+              c:identifier="g_signal_accumulator_true_handled">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ihint" transfer-ownership="none">
+          <type name="SignalInvocationHint" c:type="GSignalInvocationHint*"/>
+        </parameter>
+        <parameter name="return_accu" transfer-ownership="none">
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="handler_return" transfer-ownership="none">
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="dummy" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_add_emission_hook"
+              c:identifier="g_signal_add_emission_hook">
+      <return-value transfer-ownership="none">
+        <type name="ulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="hook_func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="3"
+                   destroy="4">
+          <type name="SignalEmissionHook" c:type="GSignalEmissionHook"/>
+        </parameter>
+        <parameter name="hook_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data_destroy" transfer-ownership="none" scope="call">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_chain_from_overridden"
+              c:identifier="g_signal_chain_from_overridden">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance_and_params" transfer-ownership="none">
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_chain_from_overridden_handler"
+              c:identifier="g_signal_chain_from_overridden_handler">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_connect_closure"
+              c:identifier="g_signal_connect_closure">
+      <return-value transfer-ownership="none">
+        <type name="ulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="detailed_signal" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="closure" transfer-ownership="none">
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="after" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_connect_closure_by_id"
+              c:identifier="g_signal_connect_closure_by_id">
+      <return-value transfer-ownership="none">
+        <type name="ulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="closure" transfer-ownership="none">
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="after" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_connect_data" c:identifier="g_signal_connect_data">
+      <return-value transfer-ownership="none">
+        <type name="ulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="detailed_signal" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="c_handler"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy_data" transfer-ownership="none" scope="call">
+          <type name="ClosureNotify" c:type="GClosureNotify"/>
+        </parameter>
+        <parameter name="connect_flags" transfer-ownership="none">
+          <type name="ConnectFlags" c:type="GConnectFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_connect_object"
+              c:identifier="g_signal_connect_object">
+      <return-value transfer-ownership="none">
+        <type name="ulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="detailed_signal" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="c_handler" transfer-ownership="none" scope="call">
+          <type name="Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="gobject" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="connect_flags" transfer-ownership="none">
+          <type name="ConnectFlags" c:type="GConnectFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_emit" c:identifier="g_signal_emit">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <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">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="detailed_signal" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_emitv" c:identifier="g_signal_emitv">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance_and_params" transfer-ownership="none">
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="return_value" transfer-ownership="none">
+          <type name="Value" c:type="GValue*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_get_invocation_hint"
+              c:identifier="g_signal_get_invocation_hint">
+      <return-value transfer-ownership="full">
+        <type name="SignalInvocationHint" c:type="GSignalInvocationHint*"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handler_block"
+              c:identifier="g_signal_handler_block">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="handler_id" transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handler_disconnect"
+              c:identifier="g_signal_handler_disconnect">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="handler_id" transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handler_find" c:identifier="g_signal_handler_find">
+      <return-value transfer-ownership="none">
+        <type name="ulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="mask" transfer-ownership="none">
+          <type name="SignalMatchType" c:type="GSignalMatchType"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="closure" transfer-ownership="none">
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handler_is_connected"
+              c:identifier="g_signal_handler_is_connected">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="handler_id" transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handler_unblock"
+              c:identifier="g_signal_handler_unblock">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="handler_id" transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handlers_block_matched"
+              c:identifier="g_signal_handlers_block_matched">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="mask" transfer-ownership="none">
+          <type name="SignalMatchType" c:type="GSignalMatchType"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="closure" transfer-ownership="none">
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handlers_disconnect_matched"
+              c:identifier="g_signal_handlers_disconnect_matched">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="mask" transfer-ownership="none">
+          <type name="SignalMatchType" c:type="GSignalMatchType"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="closure" transfer-ownership="none">
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_handlers_unblock_matched"
+              c:identifier="g_signal_handlers_unblock_matched">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="mask" transfer-ownership="none">
+          <type name="SignalMatchType" c:type="GSignalMatchType"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="closure" transfer-ownership="none">
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_has_handler_pending"
+              c:identifier="g_signal_has_handler_pending">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="may_be_blocked" transfer-ownership="none">
+          <type name="boolean" 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">
+      <return-value transfer-ownership="full">
+        <type name="uint" c:type="guint*"/>
+      </return-value>
+      <parameters>
+        <parameter name="itype" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_ids" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_lookup" c:identifier="g_signal_lookup">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="itype" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_name" c:identifier="g_signal_name">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_new" c:identifier="g_signal_new">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="itype" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="signal_flags" transfer-ownership="none">
+          <type name="SignalFlags" c:type="GSignalFlags"/>
+        </parameter>
+        <parameter name="class_offset" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="accumulator"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="5">
+          <type name="SignalAccumulator" c:type="GSignalAccumulator"/>
+        </parameter>
+        <parameter name="accu_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="c_marshaller" transfer-ownership="none">
+          <type name="SignalCMarshaller" c:type="GSignalCMarshaller"/>
+        </parameter>
+        <parameter name="return_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_params" transfer-ownership="none">
+          <type name="uint" 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">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="itype" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="signal_flags" transfer-ownership="none">
+          <type name="SignalFlags" c:type="GSignalFlags"/>
+        </parameter>
+        <parameter name="class_handler" transfer-ownership="none" scope="call">
+          <type name="Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="accumulator"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="5">
+          <type name="SignalAccumulator" c:type="GSignalAccumulator"/>
+        </parameter>
+        <parameter name="accu_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="c_marshaller" transfer-ownership="none">
+          <type name="SignalCMarshaller" c:type="GSignalCMarshaller"/>
+        </parameter>
+        <parameter name="return_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_params" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_newv" c:identifier="g_signal_newv">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="itype" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="signal_flags" transfer-ownership="none">
+          <type name="SignalFlags" c:type="GSignalFlags"/>
+        </parameter>
+        <parameter name="class_closure" transfer-ownership="none">
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+        <parameter name="accumulator"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="5">
+          <type name="SignalAccumulator" c:type="GSignalAccumulator"/>
+        </parameter>
+        <parameter name="accu_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="c_marshaller" transfer-ownership="none">
+          <type name="SignalCMarshaller" c:type="GSignalCMarshaller"/>
+        </parameter>
+        <parameter name="return_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_params" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="param_types"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="GType" c:type="GType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_override_class_closure"
+              c:identifier="g_signal_override_class_closure">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="instance_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="class_closure" transfer-ownership="none">
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_override_class_handler"
+              c:identifier="g_signal_override_class_handler">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="instance_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="class_handler" transfer-ownership="none" scope="call">
+          <type name="Callback" c:type="GCallback"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_parse_name" c:identifier="g_signal_parse_name">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="detailed_signal" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="itype" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="signal_id_p"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="detail_p" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark*"/>
+        </parameter>
+        <parameter name="force_detail_quark" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_query" c:identifier="g_signal_query">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="query" transfer-ownership="none">
+          <type name="SignalQuery" c:type="GSignalQuery*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_remove_emission_hook"
+              c:identifier="g_signal_remove_emission_hook">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="signal_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="hook_id" transfer-ownership="none">
+          <type name="ulong" c:type="gulong"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_stop_emission"
+              c:identifier="g_signal_stop_emission">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="signal_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none">
+          <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">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="detailed_signal" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_type_cclosure_new"
+              c:identifier="g_signal_type_cclosure_new">
+      <return-value transfer-ownership="full">
+        <type name="Closure" c:type="GClosure*"/>
+      </return-value>
+      <parameters>
+        <parameter name="itype" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="struct_offset" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="source_set_closure" c:identifier="g_source_set_closure">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="source" transfer-ownership="none">
+          <type name="GLib.Source" c:type="GSource*"/>
+        </parameter>
+        <parameter name="closure" transfer-ownership="none">
+          <type name="Closure" c:type="GClosure*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="strdup_value_contents"
+              c:identifier="g_strdup_value_contents">
+      <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>
+      </parameters>
+    </function>
+    <function name="type_add_class_cache_func"
+              c:identifier="g_type_add_class_cache_func">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cache_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="cache_func" transfer-ownership="none" scope="call">
+          <type name="TypeClassCacheFunc" c:type="GTypeClassCacheFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_add_class_private"
+              c:identifier="g_type_add_class_private">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="class_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="private_size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_add_interface_check"
+              c:identifier="g_type_add_interface_check">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="check_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="check_func" transfer-ownership="none" scope="call">
+          <type name="TypeInterfaceCheckFunc"
+                c:type="GTypeInterfaceCheckFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_add_interface_dynamic"
+              c:identifier="g_type_add_interface_dynamic">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="interface_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="plugin" transfer-ownership="none">
+          <type name="TypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_add_interface_static"
+              c:identifier="g_type_add_interface_static">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="interface_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="info" transfer-ownership="none">
+          <type name="InterfaceInfo" c:type="GInterfaceInfo*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_check_class_cast"
+              c:identifier="g_type_check_class_cast">
+      <return-value transfer-ownership="full">
+        <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="boolean" 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">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="TypeInstance" c:type="GTypeInstance*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_check_instance_cast"
+              c:identifier="g_type_check_instance_cast">
+      <return-value transfer-ownership="full">
+        <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="boolean" 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="boolean" 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="boolean" 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="boolean" 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">
+      <return-value transfer-ownership="full">
+        <type name="GType" c:type="GType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_children" direction="out" transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_add_private"
+              c:identifier="g_type_class_add_private">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="private_size" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_peek" c:identifier="g_type_class_peek">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_peek_parent"
+              c:identifier="g_type_class_peek_parent">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_peek_static"
+              c:identifier="g_type_class_peek_static">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_ref" c:identifier="g_type_class_ref">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_unref" c:identifier="g_type_class_unref">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_class_unref_uncached"
+              c:identifier="g_type_class_unref_uncached">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_class" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_create_instance"
+              c:identifier="g_type_create_instance">
+      <return-value transfer-ownership="full">
+        <type name="TypeInstance" c:type="GTypeInstance*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_default_interface_peek"
+              c:identifier="g_type_default_interface_peek">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_default_interface_ref"
+              c:identifier="g_type_default_interface_ref">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_default_interface_unref"
+              c:identifier="g_type_default_interface_unref">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_iface" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_depth" c:identifier="g_type_depth">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_free_instance" c:identifier="g_type_free_instance">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance" transfer-ownership="none">
+          <type name="TypeInstance" c:type="GTypeInstance*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_from_name" c:identifier="g_type_from_name">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_fundamental" c:identifier="g_type_fundamental">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="type_id" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_fundamental_next"
+              c:identifier="g_type_fundamental_next">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+    </function>
+    <function name="type_get_plugin" c:identifier="g_type_get_plugin">
+      <return-value transfer-ownership="full">
+        <type name="TypePlugin" c:type="GTypePlugin*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_get_qdata" c:identifier="g_type_get_qdata">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="quark" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_init" c:identifier="g_type_init">
+      <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">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="debug_flags" transfer-ownership="none">
+          <type name="TypeDebugFlags" c:type="GTypeDebugFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_interface_add_prerequisite"
+              c:identifier="g_type_interface_add_prerequisite">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="interface_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="prerequisite_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_interface_get_plugin"
+              c:identifier="g_type_interface_get_plugin">
+      <return-value transfer-ownership="full">
+        <type name="TypePlugin" c:type="GTypePlugin*"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="interface_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_interface_peek" c:identifier="g_type_interface_peek">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="instance_class" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="iface_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_interface_peek_parent"
+              c:identifier="g_type_interface_peek_parent">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="g_iface" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_interface_prerequisites"
+              c:identifier="g_type_interface_prerequisites">
+      <return-value transfer-ownership="full">
+        <type name="GType" c:type="GType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="interface_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_prerequisites"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_interfaces" c:identifier="g_type_interfaces">
+      <return-value transfer-ownership="full">
+        <type name="GType" c:type="GType*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_interfaces"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_is_a" c:identifier="g_type_is_a">
+      <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>
+        <parameter name="is_a_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_name" c:identifier="g_type_name">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <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">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="leaf_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="root_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_parent" c:identifier="g_type_parent">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_qname" c:identifier="g_type_qname">
+      <return-value transfer-ownership="full">
+        <type name="GLib.Quark" c:type="GQuark"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_query" c:identifier="g_type_query">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="query" transfer-ownership="none">
+          <type name="TypeQuery" c:type="GTypeQuery*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_register_dynamic"
+              c:identifier="g_type_register_dynamic">
+      <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="plugin" transfer-ownership="none">
+          <type name="TypePlugin" c:type="GTypePlugin*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TypeFlags" c:type="GTypeFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_register_fundamental"
+              c:identifier="g_type_register_fundamental">
+      <return-value transfer-ownership="none">
+        <type name="GType" c:type="GType"/>
+      </return-value>
+      <parameters>
+        <parameter name="type_id" 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="info" transfer-ownership="none">
+          <type name="TypeInfo" c:type="GTypeInfo*"/>
+        </parameter>
+        <parameter name="finfo" transfer-ownership="none">
+          <type name="TypeFundamentalInfo" c:type="GTypeFundamentalInfo*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TypeFlags" c:type="GTypeFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_register_static"
+              c:identifier="g_type_register_static">
+      <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="info" transfer-ownership="none">
+          <type name="TypeInfo" c:type="GTypeInfo*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TypeFlags" c:type="GTypeFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_register_static_simple"
+              c:identifier="g_type_register_static_simple">
+      <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="class_init" transfer-ownership="none" scope="call">
+          <type name="ClassInitFunc" c:type="GClassInitFunc"/>
+        </parameter>
+        <parameter name="instance_size" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="instance_init" transfer-ownership="none" scope="call">
+          <type name="InstanceInitFunc" c:type="GInstanceInitFunc"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="TypeFlags" c:type="GTypeFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_remove_class_cache_func"
+              c:identifier="g_type_remove_class_cache_func">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="cache_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="cache_func" transfer-ownership="none" scope="call">
+          <type name="TypeClassCacheFunc" c:type="GTypeClassCacheFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_remove_interface_check"
+              c:identifier="g_type_remove_interface_check">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="check_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="check_func" transfer-ownership="none" scope="call">
+          <type name="TypeInterfaceCheckFunc"
+                c:type="GTypeInterfaceCheckFunc"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_set_qdata" c:identifier="g_type_set_qdata">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="quark" transfer-ownership="none">
+          <type name="GLib.Quark" c:type="GQuark"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_test_flags" c:identifier="g_type_test_flags">
+      <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>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_value_table_peek"
+              c:identifier="g_type_value_table_peek">
+      <return-value transfer-ownership="full">
+        <type name="TypeValueTable" c:type="GTypeValueTable*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <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">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="src_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="dest_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="transform_func"
+                   transfer-ownership="none"
+                   scope="call">
+          <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">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="src_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="dest_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="value_type_transformable"
+              c:identifier="g_value_type_transformable">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="src_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="dest_type" transfer-ownership="none">
+          <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">
+      <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/gobject.factor b/basis/gobject/gobject.factor
new file mode 100644 (file)
index 0000000..d913511
--- /dev/null
@@ -0,0 +1,50 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien.syntax alien.c-types alien.destructors 
+alien.libraries combinators kernel literals math system
+gir glib glib.ffi ;
+
+IN: gobject.ffi
+
+TYPEDEF: void* GSignalCMarshaller
+TYPEDEF: void GStrv
+! есть alias
+TYPEDEF: gchar* gchararray
+
+IN-GIR: gobject vocab:gobject/GObject-2.0.gir
+
+IN: gobject.ffi
+
+FORGET: GIOCondition
+
+FUNCTION: void g_object_unref ( GObject* self ) ;
+
+DESTRUCTOR: g_object_unref
+
+! Исправление неправильного типа параметра для GtkWidget-child-notify
+! (разобраться)
+TYPEDEF: GParamSpec GParam
+
+<< CONSTANT: G_TYPE_FUNDAMENTAL_SHIFT 2 >>
+CONSTANT: G_TYPE_INVALID $[ 0 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_NONE $[ 1 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_INTERFACE $[ 2 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_CHAR $[ 3 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_UCHAR $[ 4 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_BOOLEAN $[ 5 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_INT $[ 6 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_UINT $[ 7 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_LONG $[ 8 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_ULONG $[ 9 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_INT64 $[ 10 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_UINT64 $[ 11 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_ENUM $[ 12 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_FLAGS $[ 13 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_FLOAT $[ 14 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_DOUBLE $[ 15 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_STRING $[ 16 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_POINTER $[ 17 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_BOXED $[ 18 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_PARAM $[ 19 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+CONSTANT: G_TYPE_OBJECT $[ 20 G_TYPE_FUNDAMENTAL_SHIFT shift ]
+
diff --git a/basis/gst/Gst-0.10.gir b/basis/gst/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/basis/gst/authors.txt b/basis/gst/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/gst/gst.factor b/basis/gst/gst.factor
new file mode 100644 (file)
index 0000000..a386e7d
--- /dev/null
@@ -0,0 +1,27 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien.syntax alien.libraries combinators 
+kernel system
+gir glib glib.ffi gobject gmodule ;
+
+<<
+"gst" {
+    { [ os winnt? ] [ "" "cdecl" add-library ] }
+    { [ os macosx? ] [ "" "cdecl" add-library ] }
+    { [ os unix? ] [ "libgstreamer-0.10.so" "cdecl" add-library ] }
+} cond
+>>
+
+IN: gst.ffi
+
+TYPEDEF: gpointer GstClockID
+TYPEDEF: guint64 GstClockTime
+TYPEDEF: gint64 GstClockTimeDiff
+
+! Временное исправление отсутвующих типов libxml2
+TYPEDEF: void* xmlNodePtr
+TYPEDEF: void* xmlDocPtr
+TYPEDEF: void* xmlNsPtr
+
+IN-GIR: gst vocab:gst/Gst-0.10.gir
+
diff --git a/basis/gtk/Gtk-2.0.gir b/basis/gtk/Gtk-2.0.gir
new file mode 100644 (file)
index 0000000..9eeb927
--- /dev/null
@@ -0,0 +1,88485 @@
+<?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="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="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="Gtk"
+             version="2.0"
+             shared-library="libgtk-x11-2.0.so.0"
+             c:prefix="Gtk">
+    <alias name="Allocation" target="Gdk.Rectangle" c:type="GtkAllocation"/>
+    <alias name="ClassInitFunc"
+           target="GObject.BaseInitFunc"
+           c:type="GtkClassInitFunc"/>
+    <alias name="EnumValue" target="GObject.EnumValue" c:type="GtkEnumValue"/>
+    <alias name="FlagValue" target="GObject.FlagsValue" c:type="GtkFlagValue"/>
+    <alias name="FundamentalType" target="GType" c:type="GtkFundamentalType"/>
+    <alias name="ObjectInitFunc"
+           target="GObject.InstanceInitFunc"
+           c:type="GtkObjectInitFunc"/>
+    <alias name="SignalMarshaller"
+           target="GObject.SignalCMarshaller"
+           c:type="GtkSignalMarshaller"/>
+    <alias name="Type" target="GType" c:type="GtkType"/>
+    <alias name="TypeClass" target="GObject.TypeClass" c:type="GtkTypeClass"/>
+    <alias name="TypeObject"
+           target="GObject.TypeInstance"
+           c:type="GtkTypeObject"/>
+    <constant name="ARG_READWRITE" value="0">
+      <type name="int"/>
+    </constant>
+    <class name="AboutDialog"
+           c:type="GtkAboutDialog"
+           doc="The &lt;structname&gt;GtkAboutDialog&lt;/structname&gt; struct contains
+only private fields and should not be directly accessed."
+           parent="Dialog"
+           glib:type-name="GtkAboutDialog"
+           glib:get-type="gtk_about_dialog_get_type"
+           glib:type-struct="AboutDialogClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_about_dialog_new"
+                   doc="Creates a new #GtkAboutDialog."
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="AboutDialog" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <function name="set_email_hook"
+                c:identifier="gtk_about_dialog_set_email_hook"
+                doc="Installs a global function to be called whenever the user activates an
+email link in an about dialog.
+Since 2.18 there exists a default function which uses gtk_show_uri(). To
+deactivate it, you can pass %NULL for @func."
+                version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="AboutDialogActivateLinkFunc"
+                c:type="GtkAboutDialogActivateLinkFunc"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <type name="AboutDialogActivateLinkFunc"
+                  c:type="GtkAboutDialogActivateLinkFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="set_url_hook"
+                c:identifier="gtk_about_dialog_set_url_hook"
+                doc="Installs a global function to be called whenever the user activates a
+URL link in an about dialog.
+Since 2.18 there exists a default function which uses gtk_show_uri(). To
+deactivate it, you can pass %NULL for @func."
+                version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="AboutDialogActivateLinkFunc"
+                c:type="GtkAboutDialogActivateLinkFunc"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="1"
+                     destroy="2">
+            <type name="AboutDialogActivateLinkFunc"
+                  c:type="GtkAboutDialogActivateLinkFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_name"
+              c:identifier="gtk_about_dialog_get_name"
+              doc="Returns the program name displayed in the about dialog.
+dialog and must not be modified."
+              version="2.6"
+              deprecated="Use gtk_about_dialog_get_program_name() instead."
+              deprecated-version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_name"
+              c:identifier="gtk_about_dialog_set_name"
+              doc="Sets the name to display in the about dialog.
+If this is not set, it defaults to g_get_application_name()."
+              version="2.6"
+              deprecated="Use gtk_about_dialog_set_program_name() instead."
+              deprecated-version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the program name">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_program_name"
+              c:identifier="gtk_about_dialog_get_program_name"
+              doc="Returns the program name displayed in the about dialog.
+dialog and must not be modified."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_program_name"
+              c:identifier="gtk_about_dialog_set_program_name"
+              doc="Sets the name to display in the about dialog.
+If this is not set, it defaults to g_get_application_name()."
+              version="2.12">
+        <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_version"
+              c:identifier="gtk_about_dialog_get_version"
+              doc="Returns the version string.
+dialog and must not be modified."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_version"
+              c:identifier="gtk_about_dialog_set_version"
+              doc="Sets the version string to display in the about dialog."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="version"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the version string">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_copyright"
+              c:identifier="gtk_about_dialog_get_copyright"
+              doc="Returns the copyright string.
+dialog and must not be modified."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_copyright"
+              c:identifier="gtk_about_dialog_set_copyright"
+              doc="Sets the copyright string to display in the about dialog.
+This should be a short string of one or two lines."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="copyright"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the copyright string">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_comments"
+              c:identifier="gtk_about_dialog_get_comments"
+              doc="Returns the comments string.
+dialog and must not be modified."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_comments"
+              c:identifier="gtk_about_dialog_set_comments"
+              doc="Sets the comments string to display in the about dialog.
+This should be a short string of one or two lines."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="comments"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a comments string">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_license"
+              c:identifier="gtk_about_dialog_get_license"
+              doc="Returns the license information.
+dialog and must not be modified."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_license"
+              c:identifier="gtk_about_dialog_set_license"
+              doc="Sets the license information to be displayed in the secondary
+license dialog. If @license is %NULL, the license button is
+hidden."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="license"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the license information or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_wrap_license"
+              c:identifier="gtk_about_dialog_get_wrap_license"
+              doc="Returns whether the license text in @about is
+automatically wrapped."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_wrap_license"
+              c:identifier="gtk_about_dialog_set_wrap_license"
+              doc="Sets whether the license text in @about is
+automatically wrapped."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrap_license" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_website"
+              c:identifier="gtk_about_dialog_get_website"
+              doc="Returns the website URL.
+dialog and must not be modified."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_website"
+              c:identifier="gtk_about_dialog_set_website"
+              doc="Sets the URL to use for the website link.
+Note that that the hook functions need to be set up
+before calling this function."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="website"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a URL string starting with &quot;http://&quot;">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_website_label"
+              c:identifier="gtk_about_dialog_get_website_label"
+              doc="Returns the label used for the website link.
+owned by the about dialog and must not be modified."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_website_label"
+              c:identifier="gtk_about_dialog_set_website_label"
+              doc="Sets the label to be used for the website link.
+It defaults to the website URL."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="website_label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_authors"
+              c:identifier="gtk_about_dialog_get_authors"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="set_authors"
+              c:identifier="gtk_about_dialog_set_authors"
+              doc="Sets the strings which are displayed in the authors tab
+of the secondary credits dialog."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="authors" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_documenters"
+              c:identifier="gtk_about_dialog_get_documenters"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="set_documenters"
+              c:identifier="gtk_about_dialog_set_documenters"
+              doc="Sets the strings which are displayed in the documenters tab
+of the secondary credits dialog."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="documenters" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_artists"
+              c:identifier="gtk_about_dialog_get_artists"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="set_artists"
+              c:identifier="gtk_about_dialog_set_artists"
+              doc="Sets the strings which are displayed in the artists tab
+of the secondary credits dialog."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="artists" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_translator_credits"
+              c:identifier="gtk_about_dialog_get_translator_credits"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_translator_credits"
+              c:identifier="gtk_about_dialog_set_translator_credits"
+              doc="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, _(&quot;translator-credits&quot;));
+]|
+It is a good idea to use the customary msgid &quot;translator-credits&quot; for this
+purpose, since translators will already know the purpose of that msgid, and
+since #GtkAboutDialog will detect if &quot;translator-credits&quot; is untranslated
+and hide the tab."
+              version="2.6">
+        <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="the translator credits">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_logo"
+              c:identifier="gtk_about_dialog_get_logo"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="set_logo"
+              c:identifier="gtk_about_dialog_set_logo"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="logo"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkPixbuf, or %NULL">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_logo_icon_name"
+              c:identifier="gtk_about_dialog_get_logo_icon_name"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_logo_icon_name"
+              c:identifier="gtk_about_dialog_set_logo_icon_name"
+              doc="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."
+              version="2.6">
+        <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="an icon name, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="artists"
+                version="2.6"
+                writable="1"
+                doc="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.">
+        <type name="GObject.Strv" c:type="GStrv"/>
+      </property>
+      <property name="authors"
+                version="2.6"
+                writable="1"
+                doc="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.">
+        <type name="GObject.Strv" c:type="GStrv"/>
+      </property>
+      <property name="comments"
+                version="2.6"
+                writable="1"
+                doc="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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="copyright"
+                version="2.6"
+                writable="1"
+                doc="Copyright information for the program.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="documenters"
+                version="2.6"
+                writable="1"
+                doc="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.">
+        <type name="GObject.Strv" c:type="GStrv"/>
+      </property>
+      <property name="license"
+                version="2.6"
+                writable="1"
+                doc="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 &quot;wrap-license&quot; property is set to %TRUE;
+otherwise the text itself must contain the intended linebreaks.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="logo"
+                version="2.6"
+                writable="1"
+                doc="A logo for the about box. If this is not set, it defaults to
+gtk_window_get_default_icon_list().">
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf"/>
+      </property>
+      <property name="logo-icon-name"
+                version="2.6"
+                writable="1"
+                doc="A named icon to use as the logo for the about box. This property
+overrides the #GtkAboutDialog:logo property.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="program-name"
+                version="2.12"
+                writable="1"
+                doc="The name of the program.
+If this is not set, it defaults to g_get_application_name().">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="translator-credits"
+                version="2.6"
+                writable="1"
+                doc="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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="version"
+                version="2.6"
+                writable="1"
+                doc="The version of the program.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="website"
+                version="2.6"
+                writable="1"
+                doc="The URL for the link to the website of the program.
+This should be a string starting with &quot;http://.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="website-label"
+                version="2.6"
+                writable="1"
+                doc="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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="wrap-license"
+                version="2.8"
+                writable="1"
+                doc="Whether to wrap the text in the license dialog.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Dialog" c:type="GtkDialog"/>
+      </field>
+      <field name="private_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+    </class>
+    <callback name="AboutDialogActivateLinkFunc"
+              c:type="GtkAboutDialogActivateLinkFunc"
+              doc="with gtk_about_dialog_set_email_hook() or
+gtk_about_dialog_set_url_hook()
+The type of a function which is called when a URL or email
+link is activated.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="about" transfer-ownership="none">
+          <type name="AboutDialog" c:type="GtkAboutDialog*"/>
+        </parameter>
+        <parameter name="link_" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <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="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </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:type="GtkAccelGroup"
+           doc="An object representing and maintaining a group of accelerators."
+           parent="GObject.Object"
+           glib:type-name="GtkAccelGroup"
+           glib:get-type="gtk_accel_group_get_type"
+           glib:type-struct="AccelGroupClass">
+      <constructor name="new"
+                   c:identifier="gtk_accel_group_new"
+                   doc="Creates a new #GtkAccelGroup.">
+        <return-value transfer-ownership="full">
+          <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+        </return-value>
+      </constructor>
+      <function name="from_accel_closure"
+                c:identifier="gtk_accel_group_from_accel_closure"
+                doc="Finds the #GtkAccelGroup to which @closure is connected;
+see gtk_accel_group_connect().">
+        <return-value transfer-ownership="full"
+                      doc="the #GtkAccelGroup to which @closure is connected, or %NULL.">
+          <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+        </return-value>
+        <parameters>
+          <parameter name="closure" transfer-ownership="none">
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_is_locked"
+              c:identifier="gtk_accel_group_get_is_locked"
+              doc="Locks are added and removed using gtk_accel_group_lock() and
+gtk_accel_group_unlock().
+%FALSE otherwise."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_modifier_mask"
+              c:identifier="gtk_accel_group_get_modifier_mask"
+              doc="Gets a #GdkModifierType representing the mask for this"
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </return-value>
+      </method>
+      <method name="lock"
+              c:identifier="gtk_accel_group_lock"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unlock"
+              c:identifier="gtk_accel_group_unlock"
+              doc="Undoes the last call to gtk_accel_group_lock() on this @accel_group.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="connect"
+              c:identifier="gtk_accel_group_connect"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_key" transfer-ownership="none">
+            <type name="uint" 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>
+          <parameter name="closure" transfer-ownership="none">
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_by_path"
+              c:identifier="gtk_accel_group_connect_by_path"
+              doc="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().">
+        <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>
+          <parameter name="closure" transfer-ownership="none">
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="disconnect"
+              c:identifier="gtk_accel_group_disconnect"
+              doc="to remove all closures
+Removes an accelerator previously installed through
+gtk_accel_group_connect().
+Since 2.20 @closure can be %NULL.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="closure"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the closure to remove from this accelerator group, or %NULL">
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="disconnect_key"
+              c:identifier="gtk_accel_group_disconnect_key"
+              doc="removed, %FALSE otherwise
+Removes an accelerator previously installed through
+gtk_accel_group_connect().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_key" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="accel_mods" transfer-ownership="none">
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="activate"
+              c:identifier="gtk_accel_group_activate"
+              doc="to activate the accelerator.
+Finds the first accelerator in @accel_group
+that matches @accel_key and @accel_mods, and
+activates it.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_quark" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="acceleratable" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="accel_key" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="accel_mods" transfer-ownership="none">
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find"
+              c:identifier="gtk_accel_group_find"
+              doc="owned by GTK+ and must not be freed.
+Finds the first entry in an accelerator group for which">
+        <return-value transfer-ownership="full">
+          <type name="AccelKey" c:type="GtkAccelKey*"/>
+        </return-value>
+        <parameters>
+          <parameter name="find_func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="AccelGroupFindFunc" c:type="GtkAccelGroupFindFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query"
+              c:identifier="gtk_accel_group_query"
+              doc="Queries an accelerator group for all entries matching @accel_key and">
+        <return-value transfer-ownership="full"
+                      doc="an array of @n_entries #GtkAccelGroupEntry elements, or %NULL. The array is owned by GTK+ and must not be freed.">
+          <type name="AccelGroupEntry" c:type="GtkAccelGroupEntry*"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_key" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="accel_mods" transfer-ownership="none">
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+          <parameter name="n_entries"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to return the number of entries found, or %NULL">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="is-locked">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="modifier-mask">
+        <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="lock_count">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="modifier_mask">
+        <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+      </field>
+      <field name="acceleratables">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="n_accels">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="priv_accels">
+        <type name="AccelGroupEntry" c:type="GtkAccelGroupEntry*"/>
+      </field>
+      <glib:signal name="accel-activate"
+                   doc="The accel-activate signal is an implementation detail of
+#GtkAccelGroup and not meant to be used by applications.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="acceleratable" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject"/>
+          </parameter>
+          <parameter name="keyval" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifier" transfer-ownership="none">
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="accel-changed"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="keyval" transfer-ownership="none">
+            <type name="uint" 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>
+      </glib:signal>
+    </class>
+    <callback name="AccelGroupActivate" c:type="GtkAccelGroupActivate">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="uint" 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" c:type="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="uint" 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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_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="boolean" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="AccelKey" c:type="GtkAccelKey">
+      <field name="accel_key" writable="1">
+        <type name="uint" 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="uint" c:type="guint"/>
+      </field>
+    </record>
+    <class name="AccelLabel"
+           c:type="GtkAccelLabel"
+           doc="The #GtkAccelLabel-struct struct contains private data only, and
+should be accessed using the functions below."
+           parent="Label"
+           glib:type-name="GtkAccelLabel"
+           glib:get-type="gtk_accel_label_get_type"
+           glib:type-struct="AccelLabelClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_accel_label_new"
+                   doc="Creates a new #GtkAccelLabel.">
+        <return-value transfer-ownership="full">
+          <type name="AccelLabel" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_accel_widget"
+              c:identifier="gtk_accel_label_get_accel_widget"
+              doc="Fetches the widget monitored by this accelerator label. See
+gtk_accel_label_set_accel_widget().">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_accel_width"
+              c:identifier="gtk_accel_label_get_accel_width"
+              doc="Returns the width needed to display the accelerator key(s).
+This is used by menus to align all of the #GtkMenuItem widgets, and shouldn&apos;t
+be needed by applications.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_accel_widget"
+              c:identifier="gtk_accel_label_set_accel_widget"
+              doc="Sets the widget to be monitored by this accelerator label.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_accel_closure"
+              c:identifier="gtk_accel_label_set_accel_closure"
+              doc="Sets the closure to be monitored by this accelerator label. The closure
+must be connected to an accelerator group; see gtk_accel_group_connect().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_closure" transfer-ownership="none">
+            <type name="GObject.Closure" c:type="GClosure*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="refetch"
+              c:identifier="gtk_accel_label_refetch"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="accel-closure" writable="1">
+        <type name="GObject.Closure" c:type="GClosure"/>
+      </property>
+      <property name="accel-widget" writable="1">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <field name="label">
+        <type name="Label" c:type="GtkLabel"/>
+      </field>
+      <field name="gtk_reserved">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="accel_padding">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="accel_widget">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="accel_closure">
+        <type name="GObject.Closure" c:type="GClosure*"/>
+      </field>
+      <field name="accel_group">
+        <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+      </field>
+      <field name="accel_string">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="accel_string_width">
+        <type name="uint16" c:type="guint16"/>
+      </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="accel_seperator">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="latin1_to_char" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="AccelMap"
+           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="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 &quot;&amp;lt;WINDOWTYPE&amp;gt;/Category1/Category2/.../Action&quot;,
+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. &quot;Gimp-Image&quot;,
+&quot;Abiword-Document&quot; or &quot;Gnumeric-Settings&quot;.
+The Category1/.../Action portion is most appropriately chosen by the action the
+accelerator triggers, i.e. for accelerators on menu items, choose the item&apos;s menu path,
+e.g. &quot;File/Save As&quot;, &quot;Image/View/Zoom&quot; or &quot;Edit/Select All&quot;.
+So a full valid accelerator path may look like:
+&quot;&amp;lt;Gimp-Toolbox&amp;gt;/File/Dialogs/Tool Options...&quot;.
+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().">
+        <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>
+          <parameter name="accel_key" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="accel_mods" transfer-ownership="none">
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="lookup_entry"
+                c:identifier="gtk_accel_map_lookup_entry"
+                doc="Looks up the accelerator entry for @accel_path and fills in @key.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="key" transfer-ownership="none">
+            <type name="AccelKey" c:type="GtkAccelKey*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="change_entry"
+                c:identifier="gtk_accel_map_change_entry"
+                doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="accel_key" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="accel_mods" transfer-ownership="none">
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+          <parameter name="replace" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="load"
+                c:identifier="gtk_accel_map_load"
+                doc="in the GLib file name encoding
+Parses a file previously saved with gtk_accel_map_save() for
+accelerator specifications, and propagates them accordingly.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="file_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="save"
+                c:identifier="gtk_accel_map_save"
+                doc="in the GLib file name encoding
+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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="file_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="foreach"
+                c:identifier="gtk_accel_map_foreach"
+                doc="is not filtered out
+Loops over the entries in the accelerator map whose accel path
+doesn&apos;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).">
+        <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="gpointer"/>
+          </parameter>
+          <parameter name="foreach_func"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="AccelMapForeach" c:type="GtkAccelMapForeach"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="load_fd"
+                c:identifier="gtk_accel_map_load_fd"
+                doc="Filedescriptor variant of gtk_accel_map_load().
+Note that the file descriptor will not be closed by this function.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="load_scanner"
+                c:identifier="gtk_accel_map_load_scanner"
+                doc="#GScanner variant of gtk_accel_map_load().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scanner" transfer-ownership="none">
+            <type name="GLib.Scanner" c:type="GScanner*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="save_fd"
+                c:identifier="gtk_accel_map_save_fd"
+                doc="Filedescriptor variant of gtk_accel_map_save().
+Note that the file descriptor will not be closed by this function.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fd" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="lock_path"
+                c:identifier="gtk_accel_map_lock_path"
+                doc="Locks the given accelerator path. If the accelerator map doesn&apos;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."
+                version="2.4">
+        <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>
+      </function>
+      <function name="unlock_path"
+                c:identifier="gtk_accel_map_unlock_path"
+                doc="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."
+                version="2.4">
+        <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>
+      </function>
+      <function name="add_filter"
+                c:identifier="gtk_accel_map_add_filter"
+                doc="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&apos;t want them to be saved into the applications accelerator
+map dump.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter_pattern" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="foreach_unfiltered"
+                c:identifier="gtk_accel_map_foreach_unfiltered"
+                doc="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).">
+        <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="gpointer"/>
+          </parameter>
+          <parameter name="foreach_func"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="AccelMapForeach" c:type="GtkAccelMapForeach"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get"
+                c:identifier="gtk_accel_map_get"
+                doc="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&apos;t a parameter to the
+other accelerator map functions."
+                version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="AccelMap" c:type="GtkAccelMap*"/>
+        </return-value>
+      </function>
+      <glib:signal name="changed"
+                   doc="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;."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_path" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="accel_key" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="accel_mods" transfer-ownership="none">
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="AccelMapClass"
+            c:type="GtkAccelMapClass"
+            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="any" 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="uint" 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="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="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>
+      <field name="parent">
+        <type name="Atk.Object" c:type="AtkObject"/>
+      </field>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </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"
+                  c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="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"
+                   doc="action, or %NULL
+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=&quot;XML-UI&quot;/&gt; for information on allowed action
+names."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Action" c:type="GtkAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="label"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the label displayed in menu items and on buttons, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tooltip"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a tooltip for the action, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="create_menu_item" invoker="create_menu_item">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="create_tool_item" invoker="create_tool_item">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="connect_proxy" invoker="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="disconnect_proxy" invoker="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>
+      <virtual-method name="create_menu" invoker="create_menu">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_name"
+              c:identifier="gtk_action_get_name"
+              doc="Returns the name of the action.
+be freed."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="is_sensitive"
+              c:identifier="gtk_action_is_sensitive"
+              doc="Returns whether the action is effectively sensitive.
+are both sensitive."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_sensitive"
+              c:identifier="gtk_action_get_sensitive"
+              doc="Returns whether the action itself is sensitive. Note that this doesn&apos;t
+necessarily mean effective sensitivity. See gtk_action_is_sensitive()
+for that."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_sensitive"
+              c:identifier="gtk_action_set_sensitive"
+              doc="Sets the ::sensitive property of the action to @sensitive. Note that
+this doesn&apos;t necessarily mean effective sensitivity. See
+gtk_action_is_sensitive()
+for that."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sensitive" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_visible"
+              c:identifier="gtk_action_is_visible"
+              doc="Returns whether the action is effectively visible.
+are both visible."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_visible"
+              c:identifier="gtk_action_get_visible"
+              doc="Returns whether the action itself is visible. Note that this doesn&apos;t
+necessarily mean effective visibility. See gtk_action_is_sensitive()
+for that."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_visible"
+              c:identifier="gtk_action_set_visible"
+              doc="Sets the ::visible property of the action to @visible. Note that
+this doesn&apos;t necessarily mean effective visibility. See
+gtk_action_is_visible()
+for that."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="activate"
+              c:identifier="gtk_action_activate"
+              doc="Emits the &quot;activate&quot; signal on the specified action, if it isn&apos;t
+insensitive. This gets called by the proxy widgets when they get
+activated.
+It can also be used to manually activate an action."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="create_icon"
+              c:identifier="gtk_action_create_icon"
+              doc="This function is intended for use by action implementations to
+create icons displayed in the proxy widgets."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_size"
+                     transfer-ownership="none"
+                     doc="the size of the icon that should be created.">
+            <type name="int" c:type="GtkIconSize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_menu_item"
+              c:identifier="gtk_action_create_menu_item"
+              doc="Creates a menu item widget that proxies for the given action."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="create_tool_item"
+              c:identifier="gtk_action_create_tool_item"
+              doc="Creates a toolbar item widget that proxies for the given action."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="create_menu"
+              c:identifier="gtk_action_create_menu"
+              doc="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."
+              version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_proxies"
+              c:identifier="gtk_action_get_proxies"
+              doc="Returns the proxy widgets for an action.
+See also gtk_widget_get_action().
+and must not be modified."
+              version="2.4">
+        <return-value transfer-ownership="none"
+                      doc="a #GSList of proxy widgets. The list is owned by GTK+">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Widget"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="connect_accelerator"
+              c:identifier="gtk_action_connect_accelerator"
+              doc="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&apos;t remove the accelerator until
+gtk_action_disconnect_accelerator() has been called as many times."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="disconnect_accelerator"
+              c:identifier="gtk_action_disconnect_accelerator"
+              doc="Undoes the effect of one call to gtk_action_connect_accelerator()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_accel_path"
+              c:identifier="gtk_action_get_accel_path"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_accel_closure"
+              c:identifier="gtk_action_get_accel_closure"
+              doc="Returns the accel closure for this action.
+owned by GTK+ and must not be unreffed or modified."
+              version="2.8">
+        <return-value transfer-ownership="full">
+          <type name="GObject.Closure" c:type="GClosure*"/>
+        </return-value>
+      </method>
+      <method name="connect_proxy"
+              c:identifier="gtk_action_connect_proxy"
+              doc="Connects a widget to an action object as a proxy.  Synchronises
+various properties of the action with the widget (such as label
+text, icon, tooltip, etc), and attaches a callback so that the
+action gets activated when the proxy widget does.
+If the widget is already connected to an action, it is disconnected
+first."
+              version="2.4"
+              deprecated="Use gtk_activatable_set_related_action() instead."
+              deprecated-version="2.16">
+        <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>
+      </method>
+      <method name="disconnect_proxy"
+              c:identifier="gtk_action_disconnect_proxy"
+              doc="Disconnects a proxy widget from an action.
+Does &lt;emphasis&gt;not&lt;/emphasis&gt; destroy the widget, however."
+              version="2.4"
+              deprecated="Use gtk_activatable_set_related_action() instead."
+              deprecated-version="2.16">
+        <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>
+      </method>
+      <method name="block_activate_from"
+              c:identifier="gtk_action_block_activate_from"
+              doc="Disables calls to the gtk_action_activate()
+function by signals on the given proxy widget.  This is used to
+break notification loops for things like check or radio actions.
+This function is intended for use by action implementations.
+action directly so this doesnt apply anymore."
+              version="2.4"
+              deprecated="activatables are now responsible for activating the"
+              deprecated-version="2.16">
+        <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>
+      </method>
+      <method name="unblock_activate_from"
+              c:identifier="gtk_action_unblock_activate_from"
+              doc="Re-enables calls to the gtk_action_activate()
+function by signals on the given proxy widget.  This undoes the
+blocking done by gtk_action_block_activate_from().
+This function is intended for use by action implementations.
+action directly so this doesnt apply anymore."
+              version="2.4"
+              deprecated="activatables are now responsible for activating the"
+              deprecated-version="2.16">
+        <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>
+      </method>
+      <method name="block_activate"
+              c:identifier="gtk_action_block_activate"
+              doc="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)."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unblock_activate"
+              c:identifier="gtk_action_unblock_activate"
+              doc="Reenable activation signals from the action"
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_accel_path"
+              c:identifier="gtk_action_set_accel_path"
+              doc="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()."
+              version="2.4">
+        <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_accel_group"
+              c:identifier="gtk_action_set_accel_group"
+              doc="Sets the #GtkAccelGroup in which the accelerator for this action
+will be installed."
+              version="2.4">
+        <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="a #GtkAccelGroup or %NULL">
+            <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_label"
+              c:identifier="gtk_action_set_label"
+              doc="Sets the label of @action."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_label"
+              c:identifier="gtk_action_get_label"
+              doc="Gets the label text of @action."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_short_label"
+              c:identifier="gtk_action_set_short_label"
+              doc="Sets a shorter label text on @action."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="short_label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_short_label"
+              c:identifier="gtk_action_get_short_label"
+              doc="Gets the short label text of @action."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_tooltip"
+              c:identifier="gtk_action_set_tooltip"
+              doc="Sets the tooltip text on @action"
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tooltip" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tooltip"
+              c:identifier="gtk_action_get_tooltip"
+              doc="Gets the tooltip text of @action."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_stock_id"
+              c:identifier="gtk_action_set_stock_id"
+              doc="Sets the stock id on @action"
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_stock_id"
+              c:identifier="gtk_action_get_stock_id"
+              doc="Gets the stock id of @action."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_gicon"
+              c:identifier="gtk_action_set_gicon"
+              doc="Sets the icon of @action."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <type name="Gio.Icon" c:type="GIcon*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_gicon"
+              c:identifier="gtk_action_get_gicon"
+              doc="Gets the gicon of @action."
+              version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="Gio.Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="set_icon_name"
+              c:identifier="gtk_action_set_icon_name"
+              doc="Sets the icon name on @action"
+              version="2.16">
+        <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="get_icon_name"
+              c:identifier="gtk_action_get_icon_name"
+              doc="Gets the icon name of @action."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_visible_horizontal"
+              c:identifier="gtk_action_set_visible_horizontal"
+              doc="Sets whether @action is visible when horizontal"
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible_horizontal" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible_horizontal"
+              c:identifier="gtk_action_get_visible_horizontal"
+              doc="Checks whether @action is visible when horizontal"
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_visible_vertical"
+              c:identifier="gtk_action_set_visible_vertical"
+              doc="Sets whether @action is visible when vertical"
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible_vertical" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible_vertical"
+              c:identifier="gtk_action_get_visible_vertical"
+              doc="Checks whether @action is visible when horizontal"
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_is_important"
+              c:identifier="gtk_action_set_is_important"
+              doc="Sets whether the action is important, this attribute is used
+primarily by toolbar items to decide whether to show a label
+or not."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_important" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_is_important"
+              c:identifier="gtk_action_get_is_important"
+              doc="Checks whether @action is important or not"
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_always_show_image"
+              c:identifier="gtk_action_set_always_show_image"
+              doc="Sets whether @action&lt;!-- --&gt;&apos;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."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="always_show" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_always_show_image"
+              c:identifier="gtk_action_get_always_show_image"
+              doc="Returns whether @action&lt;!-- --&gt;&apos;s menu item proxies will ignore the
+#GtkSettings:gtk-menu-images setting and always show their image,
+if available."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="action-group" writable="1">
+        <type name="ActionGroup" c:type="GtkActionGroup"/>
+      </property>
+      <property name="always-show-image"
+                version="2.20"
+                writable="1"
+                construct="1"
+                doc="If %TRUE, the action&apos;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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gicon"
+                version="2.16"
+                writable="1"
+                doc="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.">
+        <type name="Gio.Icon" c:type="GIcon"/>
+      </property>
+      <property name="hide-if-empty" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="icon-name"
+                version="2.10"
+                writable="1"
+                doc="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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="is-important" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="label"
+                writable="1"
+                doc="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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="name" writable="1" construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="sensitive" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="short-label"
+                writable="1"
+                doc="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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="stock-id"
+                writable="1"
+                doc="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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="tooltip" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="visible" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="visible-horizontal" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="visible-overflown"
+                version="2.6"
+                writable="1"
+                doc="When %TRUE, toolitem proxies for this action are represented in the
+toolbar overflow menu.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="visible-vertical" writable="1">
+        <type name="boolean" c:type="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"
+                   doc="The &quot;activate&quot; signal is emitted when the action is activated."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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" c:type="create_menu_item">
+          <return-value transfer-ownership="full">
+            <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" c:type="create_tool_item">
+          <return-value transfer-ownership="full">
+            <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" c:type="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" c:type="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" c:type="create_menu">
+          <return-value transfer-ownership="full">
+            <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">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ActionEntry" c:type="GtkActionEntry">
+      <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: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"
+                   doc="Creates a new #GtkActionGroup object. The name of the action group
+is used when associating &lt;link linkend=&quot;Action-Accel&quot;&gt;keybindings&lt;/link&gt;
+with the actions."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ActionGroup" c:type="GtkActionGroup*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="get_action" invoker="get_action">
+        <return-value transfer-ownership="full">
+          <type name="Action" c:type="GtkAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_name"
+              c:identifier="gtk_action_group_get_name"
+              doc="Gets the name of the action group."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_sensitive"
+              c:identifier="gtk_action_group_get_sensitive"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_sensitive"
+              c:identifier="gtk_action_group_set_sensitive"
+              doc="Changes the sensitivity of @action_group"
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sensitive" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible"
+              c:identifier="gtk_action_group_get_visible"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_visible"
+              c:identifier="gtk_action_group_set_visible"
+              doc="Changes the visible of @action_group."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_action"
+              c:identifier="gtk_action_group_get_action"
+              doc="Looks up an action in the action group by name."
+              version="2.4">
+        <return-value transfer-ownership="full"
+                      doc="the action, or %NULL if no action by that name exists">
+          <type name="Action" c:type="GtkAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="action_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_actions"
+              c:identifier="gtk_action_group_list_actions"
+              doc="Lists the actions in the action group."
+              version="2.4">
+        <return-value transfer-ownership="container"
+                      doc="an allocated list of the action objects in the action group">
+          <type name="GLib.List" c:type="GList*">
+            <type name="Action"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="add_action"
+              c:identifier="gtk_action_group_add_action"
+              doc="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;."
+              version="2.4">
+        <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>
+      </method>
+      <method name="add_action_with_accel"
+              c:identifier="gtk_action_group_add_action_with_accel"
+              doc="the format understood by gtk_accelerator_parse(), or &quot;&quot; for no accelerator, or
+%NULL to use the stock accelerator
+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;."
+              version="2.4">
+        <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="accelerator"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the accelerator for the action, in">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_action"
+              c:identifier="gtk_action_group_remove_action"
+              doc="Removes an action object from the action group."
+              version="2.4">
+        <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>
+      </method>
+      <method name="add_actions"
+              c:identifier="gtk_action_group_add_actions"
+              doc="This is a convenience function to create a number of actions and add them
+to the action group.
+The &quot;activate&quot; 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;."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entries" transfer-ownership="none">
+            <type name="ActionEntry" c:type="GtkActionEntry*"/>
+          </parameter>
+          <parameter name="n_entries" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_toggle_actions"
+              c:identifier="gtk_action_group_add_toggle_actions"
+              doc="This is a convenience function to create a number of toggle actions and add them
+to the action group.
+The &quot;activate&quot; 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;."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entries" transfer-ownership="none">
+            <type name="ToggleActionEntry" c:type="GtkToggleActionEntry*"/>
+          </parameter>
+          <parameter name="n_entries" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_radio_actions"
+              c:identifier="gtk_action_group_add_radio_actions"
+              doc="no action should be activated
+This is a convenience routine to create a group of radio actions and
+add them to the action group.
+The &quot;changed&quot; 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;."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entries" transfer-ownership="none">
+            <type name="RadioActionEntry" c:type="GtkRadioActionEntry*"/>
+          </parameter>
+          <parameter name="n_entries" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="on_change"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="5">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_actions_full"
+              c:identifier="gtk_action_group_add_actions_full"
+              doc="This variant of gtk_action_group_add_actions() adds a #GDestroyNotify
+callback for @user_data."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entries" transfer-ownership="none">
+            <type name="ActionEntry" c:type="GtkActionEntry*"/>
+          </parameter>
+          <parameter name="n_entries" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_toggle_actions_full"
+              c:identifier="gtk_action_group_add_toggle_actions_full"
+              doc="This variant of gtk_action_group_add_toggle_actions() adds a
+#GDestroyNotify callback for @user_data."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entries" transfer-ownership="none">
+            <type name="ToggleActionEntry" c:type="GtkToggleActionEntry*"/>
+          </parameter>
+          <parameter name="n_entries" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_radio_actions_full"
+              c:identifier="gtk_action_group_add_radio_actions_full"
+              doc="no action should be activated
+This variant of gtk_action_group_add_radio_actions() adds a
+#GDestroyNotify callback for @user_data."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entries" transfer-ownership="none">
+            <type name="RadioActionEntry" c:type="GtkRadioActionEntry*"/>
+          </parameter>
+          <parameter name="n_entries" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="on_change"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="5"
+                     destroy="6">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_translate_func"
+              c:identifier="gtk_action_group_set_translate_func"
+              doc="destroyed and when the translation function is changed again
+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&apos;re using gettext(), it is enough to set the translation domain
+with gtk_action_group_set_translation_domain()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="TranslateFunc" c:type="GtkTranslateFunc"/>
+          </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="set_translation_domain"
+              c:identifier="gtk_action_group_set_translation_domain"
+              doc="Sets the translation domain and uses g_dgettext() for translating the
+gtk_action_group_add_actions().
+If you&apos;re not using gettext() for localization, see
+gtk_action_group_set_translate_func()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="domain" transfer-ownership="none" doc="calls">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="translate_string"
+              c:identifier="gtk_action_group_translate_string"
+              doc="Translates a string using the specified translate_func(). This
+is mainly intended for language bindings."
+              version="2.6">
+        <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>
+      </method>
+      <property name="name" writable="1" construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="sensitive" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="visible" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="private_data">
+        <type name="ActionGroupPrivate" c:type="GtkActionGroupPrivate*"/>
+      </field>
+      <glib:signal name="connect-proxy"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <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>
+      </glib:signal>
+      <glib:signal name="disconnect-proxy"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <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>
+      </glib:signal>
+      <glib:signal name="post-activate"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <type name="Action" c:type="GtkAction"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="pre-activate"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <type name="Action" c:type="GtkAction"/>
+          </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" c:type="get_action">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ActionGroupPrivate" c:type="GtkActionGroupPrivate">
+    </record>
+    <record name="ActionPrivate" c:type="GtkActionPrivate">
+    </record>
+    <interface name="Activatable"
+               c:type="GtkActivatable"
+               glib:type-name="GtkActivatable"
+               glib:get-type="gtk_activatable_get_type"
+               glib:type-struct="ActivatableIface">
+      <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>
+      <virtual-method name="sync_action_properties"
+                      invoker="sync_action_properties">
+        <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>
+      </virtual-method>
+      <method name="sync_action_properties"
+              c:identifier="gtk_activatable_sync_action_properties"
+              doc="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."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the related #GtkAction or %NULL">
+            <type name="Action" c:type="GtkAction*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_related_action"
+              c:identifier="gtk_activatable_set_related_action"
+              doc="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;"
+              version="2.16">
+        <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>
+      </method>
+      <method name="get_related_action"
+              c:identifier="gtk_activatable_get_related_action"
+              doc="Gets the related #GtkAction for @activatable."
+              version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="Action" c:type="GtkAction*"/>
+        </return-value>
+      </method>
+      <method name="set_use_action_appearance"
+              c:identifier="gtk_activatable_set_use_action_appearance"
+              doc="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;"
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_appearance" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_action_appearance"
+              c:identifier="gtk_activatable_get_use_action_appearance"
+              doc="Gets whether this activatable should reset its layout
+and appearance when setting the related action or when
+the action changes appearance."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="do_set_related_action"
+              c:identifier="gtk_activatable_do_set_related_action"
+              doc="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&apos;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;"
+              version="2.16">
+        <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>
+      </method>
+      <property name="related-action"
+                version="2.16"
+                writable="1"
+                doc="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;">
+        <type name="Action" c:type="GtkAction"/>
+      </property>
+      <property name="use-action-appearance"
+                version="2.16"
+                writable="1"
+                doc="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;">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+    </interface>
+    <record name="ActivatableIface"
+            c:type="GtkActivatableIface"
+            glib:is-gtype-struct-for="Activatable"
+            doc="You must check the #GtkActivatable:use-action-appearance property only apply action
+properties that are meant to effect the appearance accordingly.
+#GtkActivatable::related-action property is set or unset and by the implementor when
+#GtkActivatable::use-action-appearance changes.&lt;note&gt;&lt;para&gt;This method can be called
+with a %NULL action at times&lt;/para&gt;&lt;/note&gt;"
+            version="2.16">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="update">
+        <callback name="update" c:type="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"
+                  c:type="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">
+              <type name="Action" c:type="GtkAction*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="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="full">
+          <type name="Adjustment" c:type="GtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="lower" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="upper" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="step_increment" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="page_increment" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="page_size" transfer-ownership="none">
+            <type name="double" 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="value_changed" c:identifier="gtk_adjustment_value_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="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="upper" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value"
+              c:identifier="gtk_adjustment_get_value"
+              doc="Gets the current value of the adjustment. See
+gtk_adjustment_set_value ().">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </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="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_lower"
+              c:identifier="gtk_adjustment_get_lower"
+              doc="Retrieves the minimum value of the adjustment."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_lower"
+              c:identifier="gtk_adjustment_set_lower"
+              doc="Sets the minimum value of the adjustment.
+When setting multiple adjustment properties via their individual
+setters, multiple &quot;changed&quot; signals will be emitted. However, since
+the emission of the &quot;changed&quot; signal is tied to the emission of the
+&quot;GObject::notify&quot; signals of the changed properties, it&apos;s possible
+to compress the &quot;changed&quot; 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 &quot;changed&quot; emissions."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="lower" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_upper"
+              c:identifier="gtk_adjustment_get_upper"
+              doc="Retrieves the maximum value of the adjustment."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_upper"
+              c:identifier="gtk_adjustment_set_upper"
+              doc="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 &quot;changed&quot; signal when setting multiple adjustment
+properties."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="upper" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_step_increment"
+              c:identifier="gtk_adjustment_get_step_increment"
+              doc="Retrieves the step increment of the adjustment."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_step_increment"
+              c:identifier="gtk_adjustment_set_step_increment"
+              doc="Sets the step increment of the adjustment.
+See gtk_adjustment_set_lower() about how to compress multiple
+emissions of the &quot;changed&quot; signal when setting multiple adjustment
+properties."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="step_increment" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_page_increment"
+              c:identifier="gtk_adjustment_get_page_increment"
+              doc="Retrieves the page increment of the adjustment."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_page_increment"
+              c:identifier="gtk_adjustment_set_page_increment"
+              doc="Sets the page increment of the adjustment.
+See gtk_adjustment_set_lower() about how to compress multiple
+emissions of the &quot;changed&quot; signal when setting multiple adjustment
+properties."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_increment" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_page_size"
+              c:identifier="gtk_adjustment_get_page_size"
+              doc="Retrieves the page size of the adjustment."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_page_size"
+              c:identifier="gtk_adjustment_set_page_size"
+              doc="Sets the page size of the adjustment.
+See gtk_adjustment_set_lower() about how to compress multiple
+emissions of the &quot;changed&quot; signal when setting multiple adjustment
+properties."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_size" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="configure"
+              c:identifier="gtk_adjustment_configure"
+              doc="Sets all properties of the adjustment at once.
+Use this function to avoid multiple emissions of the &quot;changed&quot;
+signal. See gtk_adjustment_set_lower() for an alternative way
+of compressing multiple emissions of &quot;changed&quot; into one."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="lower" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="upper" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="step_increment" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="page_increment" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="page_size" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="lower"
+                version="2.4"
+                writable="1"
+                doc="The minimum value of the adjustment.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="page-increment"
+                version="2.4"
+                writable="1"
+                doc="The page increment of the adjustment.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="page-size"
+                version="2.4"
+                writable="1"
+                doc="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.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="step-increment"
+                version="2.4"
+                writable="1"
+                doc="The step increment of the adjustment.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="upper"
+                version="2.4"
+                writable="1"
+                doc="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.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="value"
+                version="2.4"
+                writable="1"
+                doc="The value of the adjustment.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Object" c:type="GtkObject"/>
+      </field>
+      <field name="lower">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="upper">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="value">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="step_increment">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="page_increment">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="page_size">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <glib:signal name="changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="value-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="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"/>
+      <constructor name="new" c:identifier="gtk_alignment_new">
+        <return-value transfer-ownership="full">
+          <type name="Alignment" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="xscale" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yscale" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set" c:identifier="gtk_alignment_set">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="xscale" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yscale" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_padding"
+              c:identifier="gtk_alignment_set_padding"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="padding_top" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="padding_bottom" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="padding_left" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="padding_right" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_padding"
+              c:identifier="gtk_alignment_get_padding"
+              doc="Gets the padding on the different sides of the widget.
+See gtk_alignment_set_padding ()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="padding_top"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the padding for the top of the widget, or %NULL">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+          <parameter name="padding_bottom"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the padding for the bottom of the widget, or %NULL">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+          <parameter name="padding_left"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the padding for the left of the widget, or %NULL">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+          <parameter name="padding_right"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the padding for the right of the widget, or %NULL">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="bottom-padding"
+                version="2.4"
+                writable="1"
+                doc="The padding to insert at the bottom of the widget.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="left-padding"
+                version="2.4"
+                writable="1"
+                doc="The padding to insert at the left of the widget.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="right-padding"
+                version="2.4"
+                writable="1"
+                doc="The padding to insert at the right of the widget.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="top-padding"
+                version="2.4"
+                writable="1"
+                doc="The padding to insert at the top of the widget.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="xalign" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="xscale" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="yalign" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="yscale" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <field name="bin">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+      <field name="xalign">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="yalign">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="xscale">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="yscale">
+        <type name="float" c:type="gfloat"/>
+      </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">
+    </record>
+    <enumeration name="AnchorType"
+                 glib:type-name="GtkAnchorType"
+                 glib:get-type="gtk_anchor_type_get_type"
+                 c:type="GtkAnchorType">
+      <member name="center"
+              value="0"
+              c:identifier="GTK_ANCHOR_CENTER"
+              glib:nick="center"/>
+      <member name="north"
+              value="1"
+              c:identifier="GTK_ANCHOR_NORTH"
+              glib:nick="north"/>
+      <member name="north_west"
+              value="2"
+              c:identifier="GTK_ANCHOR_NORTH_WEST"
+              glib:nick="north-west"/>
+      <member name="north_east"
+              value="3"
+              c:identifier="GTK_ANCHOR_NORTH_EAST"
+              glib:nick="north-east"/>
+      <member name="south"
+              value="4"
+              c:identifier="GTK_ANCHOR_SOUTH"
+              glib:nick="south"/>
+      <member name="south_west"
+              value="5"
+              c:identifier="GTK_ANCHOR_SOUTH_WEST"
+              glib:nick="south-west"/>
+      <member name="south_east"
+              value="6"
+              c:identifier="GTK_ANCHOR_SOUTH_EAST"
+              glib:nick="south-east"/>
+      <member name="west"
+              value="7"
+              c:identifier="GTK_ANCHOR_WEST"
+              glib:nick="west"/>
+      <member name="east"
+              value="8"
+              c:identifier="GTK_ANCHOR_EAST"
+              glib:nick="east"/>
+      <member name="n" value="1" c:identifier="GTK_ANCHOR_N" glib:nick="n"/>
+      <member name="nw" value="2" c:identifier="GTK_ANCHOR_NW" glib:nick="nw"/>
+      <member name="ne" value="3" c:identifier="GTK_ANCHOR_NE" glib:nick="ne"/>
+      <member name="s" value="4" c:identifier="GTK_ANCHOR_S" glib:nick="s"/>
+      <member name="sw" value="5" c:identifier="GTK_ANCHOR_SW" glib:nick="sw"/>
+      <member name="se" value="6" c:identifier="GTK_ANCHOR_SE" glib:nick="se"/>
+      <member name="w" value="7" c:identifier="GTK_ANCHOR_W" glib:nick="w"/>
+      <member name="e" value="8" c:identifier="GTK_ANCHOR_E" glib:nick="e"/>
+    </enumeration>
+    <record name="Arg" c:type="GtkArg">
+      <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="int8" c:type="gchar"/>
+        </field>
+        <field name="uchar_data" writable="1">
+          <type name="uint8" c:type="guchar"/>
+        </field>
+        <field name="bool_data" writable="1">
+          <type name="boolean" c:type="gboolean"/>
+        </field>
+        <field name="int_data" writable="1">
+          <type name="int" c:type="gint"/>
+        </field>
+        <field name="uint_data" writable="1">
+          <type name="uint" c:type="guint"/>
+        </field>
+        <field name="long_data" writable="1">
+          <type name="long" c:type="glong"/>
+        </field>
+        <field name="ulong_data" writable="1">
+          <type name="ulong" c:type="gulong"/>
+        </field>
+        <field name="float_data" writable="1">
+          <type name="float" c:type="gfloat"/>
+        </field>
+        <field name="double_data" writable="1">
+          <type name="double" 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="any" 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="any" c:type="gpointer"/>
+          </field>
+        </record>
+      </union>
+    </record>
+    <bitfield name="ArgFlags"
+              glib:type-name="GtkArgFlags"
+              glib:get-type="gtk_arg_flags_get_type"
+              c:type="GtkArgFlags">
+      <member name="readable"
+              value="1"
+              c:identifier="GTK_ARG_READABLE"
+              glib:nick="readable"/>
+      <member name="writable"
+              value="2"
+              c:identifier="GTK_ARG_WRITABLE"
+              glib:nick="writable"/>
+      <member name="construct"
+              value="4"
+              c:identifier="GTK_ARG_CONSTRUCT"
+              glib:nick="construct"/>
+      <member name="construct_only"
+              value="8"
+              c:identifier="GTK_ARG_CONSTRUCT_ONLY"
+              glib:nick="construct-only"/>
+      <member name="child_arg"
+              value="16"
+              c:identifier="GTK_ARG_CHILD_ARG"
+              glib:nick="child-arg"/>
+    </bitfield>
+    <class name="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"/>
+      <constructor name="new" c:identifier="gtk_arrow_new">
+        <return-value transfer-ownership="full">
+          <type name="Arrow" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="arrow_type" transfer-ownership="none">
+            <type name="ArrowType" c:type="GtkArrowType"/>
+          </parameter>
+          <parameter name="shadow_type" transfer-ownership="none">
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set" c:identifier="gtk_arrow_set">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="arrow_type" transfer-ownership="none">
+            <type name="ArrowType" c:type="GtkArrowType"/>
+          </parameter>
+          <parameter name="shadow_type" transfer-ownership="none">
+            <type name="ShadowType" c:type="GtkShadowType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="arrow-type" writable="1">
+        <type name="ArrowType" c:type="GtkArrowType"/>
+      </property>
+      <property name="shadow-type" writable="1">
+        <type name="ShadowType" c:type="GtkShadowType"/>
+      </property>
+      <field name="misc">
+        <type name="Misc" c:type="GtkMisc"/>
+      </field>
+      <field name="arrow_type">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="shadow_type">
+        <type name="int16" c:type="gint16"/>
+      </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>
+    <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: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"/>
+      <constructor name="new" c:identifier="gtk_aspect_frame_new">
+        <return-value transfer-ownership="full">
+          <type name="AspectFrame" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="xalign" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="ratio" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="obey_child" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set" c:identifier="gtk_aspect_frame_set">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="ratio" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="obey_child" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="obey-child" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="ratio" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="xalign" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="yalign" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <field name="frame">
+        <type name="Frame" c:type="GtkFrame"/>
+      </field>
+      <field name="xalign">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="yalign">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="ratio">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="obey_child">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="center_allocation">
+        <type name="Allocation" c:type="GtkAllocation"/>
+      </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>
+    <class name="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"/>
+      <constructor name="new"
+                   c:identifier="gtk_assistant_new"
+                   doc="Creates a new #GtkAssistant."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="Assistant" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_current_page"
+              c:identifier="gtk_assistant_get_current_page"
+              doc="Returns the page number of the current page
+the @assistant, if the @assistant has no pages, -1 will be returned"
+              version="2.10">
+        <return-value transfer-ownership="none" doc="of the current page in">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_current_page"
+              c:identifier="gtk_assistant_set_current_page"
+              doc="If negative, the last page will be used. If greater
+than the number of pages in the @assistant, nothing
+will be done.
+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()."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_num" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_pages"
+              c:identifier="gtk_assistant_get_n_pages"
+              doc="Returns the number of pages in the @assistant"
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_nth_page"
+              c:identifier="gtk_assistant_get_nth_page"
+              doc="Returns the child widget contained in page number @page_num."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_num" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend_page"
+              c:identifier="gtk_assistant_prepend_page"
+              doc="Prepends a page to the @assistant."
+              version="2.10">
+        <return-value transfer-ownership="none" doc="of the inserted page">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_page"
+              c:identifier="gtk_assistant_append_page"
+              doc="Appends a page to the @assistant."
+              version="2.10">
+        <return-value transfer-ownership="none" doc="of the inserted page">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_page"
+              c:identifier="gtk_assistant_insert_page"
+              doc="or -1 to append the page to the @assistant
+Inserts a page in the @assistant at a given position."
+              version="2.10">
+        <return-value transfer-ownership="none" doc="of the inserted page">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="position"
+                     transfer-ownership="none"
+                     doc="at which to insert the page,">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_forward_page_func"
+              c:identifier="gtk_assistant_set_forward_page_func"
+              doc="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."
+              version="2.10">
+        <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="2"
+                     destroy="3"
+                     doc="the #GtkAssistantPageFunc, or %NULL to use the default one">
+            <type name="AssistantPageFunc" c:type="GtkAssistantPageFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_page_type"
+              c:identifier="gtk_assistant_set_page_type"
+              doc="Sets the page type for @page. The page type determines the page
+behavior in the @assistant."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="AssistantPageType" c:type="GtkAssistantPageType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_page_type"
+              c:identifier="gtk_assistant_get_page_type"
+              doc="Gets the page type of @page."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="AssistantPageType" c:type="GtkAssistantPageType"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_page_title"
+              c:identifier="gtk_assistant_set_page_title"
+              doc="Sets a title for @page. The title is displayed in the header
+area of the assistant when @page is the current page."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="title" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_page_title"
+              c:identifier="gtk_assistant_get_page_title"
+              doc="Gets the title for @page."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_page_header_image"
+              c:identifier="gtk_assistant_set_page_header_image"
+              doc="Sets a header image for @page. This image is displayed in the header
+area of the assistant when @page is the current page."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="pixbuf"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the new header image @page">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_page_header_image"
+              c:identifier="gtk_assistant_get_page_header_image"
+              doc="Gets the header image for @page.
+if there&apos;s no header image for the page."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_page_side_image"
+              c:identifier="gtk_assistant_set_page_side_image"
+              doc="Sets a header image for @page. This image is displayed in the side
+area of the assistant when @page is the current page."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="pixbuf"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the new header image @page">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_page_side_image"
+              c:identifier="gtk_assistant_get_page_side_image"
+              doc="Gets the header image for @page.
+if there&apos;s no side image for the page."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_page_complete"
+              c:identifier="gtk_assistant_set_page_complete"
+              doc="Sets whether @page contents are complete. This will make"
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="complete" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_page_complete"
+              c:identifier="gtk_assistant_get_page_complete"
+              doc="Gets whether @page is complete."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_action_widget"
+              c:identifier="gtk_assistant_add_action_widget"
+              doc="Adds a widget to the action area of a #GtkAssistant."
+              version="2.10">
+        <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="remove_action_widget"
+              c:identifier="gtk_assistant_remove_action_widget"
+              doc="Removes a widget from the action area of a #GtkAssistant."
+              version="2.10">
+        <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="update_buttons_state"
+              c:identifier="gtk_assistant_update_buttons_state"
+              doc="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."
+              version="2.10">
+        <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="cancel">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="forward">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="back">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="apply">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="close">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="last">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="priv">
+        <type name="AssistantPrivate" c:type="GtkAssistantPrivate*"/>
+      </field>
+      <glib:signal name="apply"
+                   doc="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 to put 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."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cancel"
+                   doc="The ::cancel signal is emitted when then the cancel button is clicked."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="close"
+                   doc="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."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="prepare"
+                   doc="The ::prepare signal is emitted when a new page is set as the assistant&apos;s
+current page, before making the new page visible. A handler for this signal
+can do any preparation which are necessary before showing @page."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget"/>
+          </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" c:type="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" c:type="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" c:type="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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved5">
+        <callback name="gtk_reserved5" c:type="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="AssistantPageFunc" c:type="GtkAssistantPageFunc">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="current_page" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" 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">
+      <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">
+    </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="2001">
+      <type name="int"/>
+    </constant>
+    <constant name="BUTTONBOX_DEFAULT" value="-1">
+      <type name="int"/>
+    </constant>
+    <class name="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"/>
+      <method name="get_child"
+              c:identifier="gtk_bin_get_child"
+              doc="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.">
+        <return-value transfer-ownership="none"
+                      doc="pointer to child of the #GtkBin">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="child">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </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="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="long" c:type="glong"/>
+        </field>
+        <field name="double_data" writable="1">
+          <type name="double" 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="uint" 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="uint" c:type="guint"/>
+      </field>
+      <field name="in_emission" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="marks_unbound" writable="1" bits="1">
+        <type name="uint" 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="int" c:type="gint"/>
+      </field>
+      <field name="widget_path_pspecs" writable="1">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="widget_class_pspecs" writable="1">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="class_branch_pspecs" writable="1">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </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="uint" c:type="guint"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gtk_binding_set_new"
+                   doc="GTK+ maintains a global list of binding sets. Each binding set has
+a unique name which needs to be specified upon creation.">
+        <return-value transfer-ownership="full">
+          <type name="BindingSet" c:type="GtkBindingSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="set_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="activate"
+              c:identifier="gtk_binding_set_activate"
+              doc="Find a key binding matching @keyval and @modifiers within">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="keyval" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Object" c:type="GtkObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_path"
+              c:identifier="gtk_binding_set_add_path"
+              doc="This function is used internally by the GtkRC parsing mechanism to
+assign match patterns to #GtkBindingSet structures.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path_type" transfer-ownership="none">
+            <type name="PathType" c:type="GtkPathType"/>
+          </parameter>
+          <parameter name="path_pattern" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="priority" transfer-ownership="none">
+            <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="uint" 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">
+      <field name="left" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="right" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="top" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="bottom" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gtk_border_new"
+                   doc="Allocates a new #GtkBorder structure and initializes its elements to zero.
+freed with gtk_border_free()"
+                   version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Border" c:type="GtkBorder*"/>
+        </return-value>
+      </constructor>
+      <method name="copy"
+              c:identifier="gtk_border_copy"
+              doc="Copies a #GtkBorder structure.">
+        <return-value transfer-ownership="full">
+          <type name="Border" c:type="GtkBorder*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gtk_border_free"
+              doc="Frees a #GtkBorder structure.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="Box"
+           c:type="GtkBox"
+           parent="Container"
+           abstract="1"
+           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"/>
+      <method name="pack_start"
+              c:identifier="gtk_box_pack_start"
+              doc="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
+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
+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.">
+        <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="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="fill" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="padding" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_end"
+              c:identifier="gtk_box_pack_end"
+              doc="to @box. The extra space will be divided evenly between all children
+of @box that use this option
+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
+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
+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.">
+        <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="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="fill" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="padding" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_start_defaults"
+              c:identifier="gtk_box_pack_start_defaults"
+              doc="Adds @widget 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.
+Parameters for how to pack the child @widget, #GtkBox:expand,
+#GtkBox:fill and #GtkBox:padding, are given their default
+values, %TRUE, %TRUE, and 0, respectively."
+              deprecated="Use gtk_box_pack_start()"
+              deprecated-version="2.14">
+        <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>
+      </method>
+      <method name="pack_end_defaults"
+              c:identifier="gtk_box_pack_end_defaults"
+              doc="Adds @widget to @box, packed with reference to the end of @box.
+The child is packed after any other child packed with reference
+to the start of @box.
+Parameters for how to pack the child @widget, #GtkBox:expand,
+#GtkBox:fill and #GtkBox:padding, are given their default
+values, %TRUE, %TRUE, and 0, respectively."
+              deprecated="Use gtk_box_pack_end()"
+              deprecated-version="2.14">
+        <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>
+      </method>
+      <method name="set_homogeneous"
+              c:identifier="gtk_box_set_homogeneous"
+              doc="%FALSE for variable allotments
+Sets the #GtkBox:homogeneous property of @box, controlling
+whether or not all children of @box are given equal space
+in the box.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_homogeneous"
+              c:identifier="gtk_box_get_homogeneous"
+              doc="Returns whether the box is homogeneous (all children are the
+same size). See gtk_box_set_homogeneous().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_spacing"
+              c:identifier="gtk_box_set_spacing"
+              doc="Sets the #GtkBox:spacing property of @box, which is the
+number of pixels to place between children of @box.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_spacing"
+              c:identifier="gtk_box_get_spacing"
+              doc="Gets the value set by gtk_box_set_spacing().">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="reorder_child"
+              c:identifier="gtk_box_reorder_child"
+              doc="of @box, starting from 0. If negative, indicates the end of
+the list
+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&apos;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.">
+        <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="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_child_packing"
+              c:identifier="gtk_box_query_child_packing"
+              doc="Obtains information about how @child is packed into @box.">
+        <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="expand" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="fill" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="padding" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+          <parameter name="pack_type" transfer-ownership="none">
+            <type name="PackType" c:type="GtkPackType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_child_packing"
+              c:identifier="gtk_box_set_child_packing"
+              doc="Sets the way @child is packed into @box.">
+        <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="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="fill" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="padding" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="pack_type" transfer-ownership="none">
+            <type name="PackType" c:type="GtkPackType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="homogeneous" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="spacing" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="children">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="spacing">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="homogeneous" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </class>
+    <record name="BoxChild" c:type="GtkBoxChild">
+      <field name="widget" writable="1">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="padding" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="expand" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="fill" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="pack" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_secondary" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="BoxClass"
+            c:type="GtkBoxClass"
+            glib:is-gtype-struct-for="Box">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+    </record>
+    <interface name="Buildable"
+               c:type="GtkBuildable"
+               glib:type-name="GtkBuildable"
+               glib:get-type="gtk_buildable_get_type"
+               glib:type-struct="BuildableIface">
+      <virtual-method name="set_name" invoker="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="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_name" invoker="get_name">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="add_child" invoker="add_child">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_buildable_property"
+                      invoker="set_buildable_property">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </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>
+      </virtual-method>
+      <virtual-method name="construct_child" invoker="construct_child">
+        <return-value transfer-ownership="full">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="custom_tag_start" invoker="custom_tag_start">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="tagname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parser" transfer-ownership="none">
+            <type name="GLib.MarkupParser" c:type="GMarkupParser*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="custom_tag_end" invoker="custom_tag_end">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="tagname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="custom_finished" invoker="custom_finished">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="tagname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="parser_finished" invoker="parser_finished">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_internal_child" invoker="get_internal_child">
+        <return-value transfer-ownership="full">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="childname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_name"
+              c:identifier="gtk_buildable_set_name"
+              doc="Sets the name of the @buildable object."
+              version="2.12">
+        <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_name"
+              c:identifier="gtk_buildable_get_name"
+              doc="Gets the name of the @buildable object.
+#GtkBuilder sets the name based on the the
+&lt;link linkend=&quot;BUILDER-UI&quot;&gt;GtkBuilder UI definition&lt;/link&gt;
+used to construct the @buildable."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="add_child"
+              c:identifier="gtk_buildable_add_child"
+              doc="Adds a child to @buildable. @type is an optional string
+describing how the child should be added."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="type"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="kind of child or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_buildable_property"
+              c:identifier="gtk_buildable_set_buildable_property"
+              doc="Sets the property name @name to @value on the @buildable object."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </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>
+      </method>
+      <method name="construct_child"
+              c:identifier="gtk_buildable_construct_child"
+              doc="Constructs a child of @buildable with the name @name.
+#GtkBuilder calls this function if a &quot;constructor&quot; has been
+specified in the UI definition."
+              version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="custom_tag_start"
+              c:identifier="gtk_buildable_custom_tag_start"
+              doc="to parser functions
+This is called for each unknown element under &amp;lt;child&amp;gt;.
+if it doesn&apos;t."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="child"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="child object or %NULL for non-child tags">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="tagname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parser" transfer-ownership="none">
+            <type name="GLib.MarkupParser" c:type="GMarkupParser*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="custom_tag_end"
+              c:identifier="gtk_buildable_custom_tag_end"
+              doc="This is called at the end of each custom element handled by
+the buildable."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="child"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="child object or %NULL for non-child tags">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="tagname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="custom_finished"
+              c:identifier="gtk_buildable_custom_finished"
+              doc="This is similar to gtk_buildable_parser_finished() but is
+called once for each custom tag handled by the @buildable."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="child"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="child object or %NULL for non-child tags">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+          <parameter name="tagname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parser_finished"
+              c:identifier="gtk_buildable_parser_finished"
+              doc="Called when the builder finishes the parsing of a
+&lt;link linkend=&quot;BUILDER-UI&quot;&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."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_internal_child"
+              c:identifier="gtk_buildable_get_internal_child"
+              doc="Get the internal child called @childname of the @buildable object."
+              version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="builder" transfer-ownership="none">
+            <type name="Builder" c:type="GtkBuilder*"/>
+          </parameter>
+          <parameter name="childname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </interface>
+    <record name="BuildableIface"
+            c:type="GtkBuildableIface"
+            glib:is-gtype-struct-for="Buildable">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="set_name">
+        <callback name="set_name" c:type="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">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_name">
+        <callback name="get_name" c:type="get_name">
+          <return-value transfer-ownership="none">
+            <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" c:type="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">
+              <type name="Builder" c:type="GtkBuilder*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="GObject.Object" c:type="GObject*"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_buildable_property">
+        <callback name="set_buildable_property"
+                  c:type="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">
+              <type name="Builder" c:type="GtkBuilder*"/>
+            </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>
+        </callback>
+      </field>
+      <field name="construct_child">
+        <callback name="construct_child" c:type="construct_child">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="Builder" c:type="GtkBuilder*"/>
+            </parameter>
+            <parameter name="name" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="custom_tag_start">
+        <callback name="custom_tag_start" c:type="custom_tag_start">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="Builder" c:type="GtkBuilder*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="GObject.Object" c:type="GObject*"/>
+            </parameter>
+            <parameter name="tagname" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="parser" transfer-ownership="none">
+              <type name="GLib.MarkupParser" c:type="GMarkupParser*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="any" c:type="gpointer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="custom_tag_end">
+        <callback name="custom_tag_end" c:type="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">
+              <type name="Builder" c:type="GtkBuilder*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="GObject.Object" c:type="GObject*"/>
+            </parameter>
+            <parameter name="tagname" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="any" c:type="gpointer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="custom_finished">
+        <callback name="custom_finished" c:type="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">
+              <type name="Builder" c:type="GtkBuilder*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="GObject.Object" c:type="GObject*"/>
+            </parameter>
+            <parameter name="tagname" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="parser_finished">
+        <callback name="parser_finished" c:type="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">
+              <type name="Builder" c:type="GtkBuilder*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_internal_child">
+        <callback name="get_internal_child" c:type="get_internal_child">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="Builder" c:type="GtkBuilder*"/>
+            </parameter>
+            <parameter name="childname" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="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"
+                   doc="Creates a new builder object."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="Builder" c:type="GtkBuilder*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="get_type_from_name" invoker="get_type_from_name">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="type_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="add_from_file"
+              c:identifier="gtk_builder_add_from_file"
+              doc="Parses a file containing a &lt;link linkend=&quot;BUILDER-UI&quot;&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."
+              version="2.12"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_from_string"
+              c:identifier="gtk_builder_add_from_string"
+              doc="Parses a string containing a &lt;link linkend=&quot;BUILDER-UI&quot;&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."
+              version="2.12"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_objects_from_file"
+              c:identifier="gtk_builder_add_objects_from_file"
+              doc="Parses a file containing a &lt;link linkend=&quot;BUILDER-UI&quot;&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;"
+              version="2.14"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="object_ids" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_objects_from_string"
+              c:identifier="gtk_builder_add_objects_from_string"
+              doc="Parses a string containing a &lt;link linkend=&quot;BUILDER-UI&quot;&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;"
+              version="2.14"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+          <parameter name="object_ids" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_object"
+              c:identifier="gtk_builder_get_object"
+              doc="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."
+              version="2.12">
+        <return-value transfer-ownership="none"
+                      doc="the object named @name or %NULL if">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_objects"
+              c:identifier="gtk_builder_get_objects"
+              doc="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()"
+              version="2.12">
+        <return-value transfer-ownership="container"
+                      doc="a newly-allocated #GSList containing all the objects">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="GObject.Object"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="connect_signals"
+              c:identifier="gtk_builder_connect_signals"
+              doc="This method is a simpler variation of gtk_builder_connect_signals_full().
+It uses #GModule&apos;s introspective features (by opening the module %NULL)
+to look at the application&apos;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."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="connect_signals_full"
+              c:identifier="gtk_builder_connect_signals_full"
+              doc="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."
+              version="2.12">
+        <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="BuilderConnectFunc" c:type="GtkBuilderConnectFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_translation_domain"
+              c:identifier="gtk_builder_set_translation_domain"
+              doc="Sets the translation domain of @builder.
+See #GtkBuilder:translation-domain."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="domain"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the translation domain or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_translation_domain"
+              c:identifier="gtk_builder_get_translation_domain"
+              doc="Gets the translation domain of @builder.
+by the builder object and must not be modified or freed."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_type_from_name"
+              c:identifier="gtk_builder_get_type_from_name"
+              doc="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"
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="type_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="value_from_string"
+              c:identifier="gtk_builder_value_from_string"
+              doc="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."
+              version="2.12"
+              throws="1">
+        <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>
+          <parameter name="string" 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="value_from_string_type"
+              c:identifier="gtk_builder_value_from_string_type"
+              doc="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."
+              version="2.12"
+              throws="1">
+        <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>
+          <parameter name="string" 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>
+      <property name="translation-domain" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </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" c:type="get_type_from_name">
+          <return-value transfer-ownership="none">
+            <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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved5">
+        <callback name="gtk_reserved5" c:type="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved6">
+        <callback name="gtk_reserved6" c:type="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved7">
+        <callback name="gtk_reserved7" c:type="_gtk_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved8">
+        <callback name="gtk_reserved8" c:type="_gtk_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="BuilderConnectFunc"
+              c:type="GtkBuilderConnectFunc"
+              doc="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."
+              version="2.12">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="builder" transfer-ownership="none">
+          <type name="Builder" c:type="GtkBuilder*"/>
+        </parameter>
+        <parameter name="object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="signal_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="handler_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="connect_object" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="flags" transfer-ownership="none">
+          <type name="GObject.ConnectFlags" c:type="GConnectFlags"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="6">
+          <type name="any" 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">
+      <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">
+    </record>
+    <class name="Button"
+           c:type="GtkButton"
+           parent="Bin"
+           glib:type-name="GtkButton"
+           glib:get-type="gtk_button_get_type"
+           glib:type-struct="ButtonClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_button_new">
+        <return-value transfer-ownership="full">
+          <type name="Button" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_button_new_with_label">
+        <return-value transfer-ownership="full">
+          <type name="Button" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_stock"
+                   c:identifier="gtk_button_new_from_stock"
+                   doc="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()).">
+        <return-value transfer-ownership="full">
+          <type name="Button" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_mnemonic"
+                   c:identifier="gtk_button_new_with_mnemonic"
+                   doc="mnemonic character
+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 &apos;__&apos; (two
+underscores). The first underlined character represents a keyboard
+accelerator called a mnemonic.
+Pressing Alt and that key activates the button.">
+        <return-value transfer-ownership="full">
+          <type name="Button" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="pressed" c:identifier="gtk_button_pressed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="released" c:identifier="gtk_button_released">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="clicked" c:identifier="gtk_button_clicked">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="enter" c:identifier="gtk_button_enter">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="leave" c:identifier="gtk_button_leave">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_relief" c:identifier="gtk_button_set_relief">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="newstyle" transfer-ownership="none">
+            <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_relief" c:identifier="gtk_button_get_relief">
+        <return-value transfer-ownership="full">
+          <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+        </return-value>
+      </method>
+      <method name="set_label"
+              c:identifier="gtk_button_set_label"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_label"
+              c:identifier="gtk_button_get_label"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_use_underline"
+              c:identifier="gtk_button_set_use_underline"
+              doc="If true, an underline in the text of the button label indicates
+the next character should be used for the mnemonic accelerator key.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_underline" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_underline"
+              c:identifier="gtk_button_get_use_underline"
+              doc="Returns whether an embedded underline in the button label indicates a
+mnemonic. See gtk_button_set_use_underline ().
+indicates the mnemonic accelerator keys.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_use_stock"
+              c:identifier="gtk_button_set_use_stock"
+              doc="If %TRUE, the label set on the button is used as a
+stock id to select the stock item for the button.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_stock" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_stock"
+              c:identifier="gtk_button_get_use_stock"
+              doc="Returns whether the button label is a stock item.
+select a stock item instead of being
+used directly as the label text.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_focus_on_click"
+              c:identifier="gtk_button_set_focus_on_click"
+              doc="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&apos;t want the keyboard focus removed from the main area of the
+application."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="focus_on_click" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_focus_on_click"
+              c:identifier="gtk_button_get_focus_on_click"
+              doc="Returns whether the button grabs focus when it is clicked with the mouse.
+See gtk_button_set_focus_on_click().
+the mouse."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_alignment"
+              c:identifier="gtk_button_set_alignment"
+              doc="1.0 is right aligned
+1.0 is bottom aligned
+Sets the alignment of the child. This property has no effect unless
+the child is a #GtkMisc or a #GtkAligment."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_alignment"
+              c:identifier="gtk_button_get_alignment"
+              doc="Gets the alignment of the child in the button."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="yalign" direction="out" transfer-ownership="full">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_image"
+              c:identifier="gtk_button_set_image"
+              doc="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&apos;t have to call
+gtk_widget_show() on @image yourself."
+              version="2.6">
+        <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="get_image"
+              c:identifier="gtk_button_get_image"
+              doc="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()."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_image_position"
+              c:identifier="gtk_button_set_image_position"
+              doc="Sets the position of the image relative to the text
+inside the button."
+              version="2.10">
+        <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="get_image_position"
+              c:identifier="gtk_button_get_image_position"
+              doc="Gets the position of the image relative to the text
+inside the button."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </return-value>
+      </method>
+      <property name="focus-on-click" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="image" writable="1">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <property name="image-position"
+                version="2.10"
+                writable="1"
+                doc="The position of the image relative to the text inside the button.">
+        <type name="PositionType" c:type="GtkPositionType"/>
+      </property>
+      <property name="label" writable="1" construct="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="relief" writable="1">
+        <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+      </property>
+      <property name="use-stock" writable="1" construct="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="use-underline" writable="1" construct="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="xalign"
+                version="2.4"
+                writable="1"
+                doc="If the child of the button is a #GtkMisc or #GtkAlignment, this property
+can be used to control it&apos;s horizontal alignment. 0.0 is left aligned,
+1.0 is right aligned.">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="yalign"
+                version="2.4"
+                writable="1"
+                doc="If the child of the button is a #GtkMisc or #GtkAlignment, this property
+can be used to control it&apos;s vertical alignment. 0.0 is top aligned,
+1.0 is bottom aligned.">
+        <type name="float" c:type="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="uint" c:type="guint"/>
+      </field>
+      <field name="constructed" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="in_button" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="button_down" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="relief" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="use_underline" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="use_stock" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="depressed" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="depress_on_activate" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="focus_on_click" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="activate"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="clicked"
+                   doc="Emitted when the button has been activated (pressed and released).">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="enter"
+                   doc="Emitted when the pointer enters the button."
+                   deprecated="Use the #GtkWidget::enter-notify-event signal."
+                   deprecated-version="2.8">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="leave"
+                   doc="Emitted when the pointer leaves the button."
+                   deprecated="Use the #GtkWidget::leave-notify-event signal."
+                   deprecated-version="2.8">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="pressed"
+                   doc="Emitted when the button is pressed."
+                   deprecated="Use the #GtkWidget::button-press-event signal."
+                   deprecated-version="2.8">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="released"
+                   doc="Emitted when the button is released."
+                   deprecated="Use the #GtkWidget::button-release-event signal."
+                   deprecated-version="2.8">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <bitfield name="ButtonAction"
+              glib:type-name="GtkButtonAction"
+              glib:get-type="gtk_button_action_get_type"
+              c:type="GtkButtonAction">
+      <member name="ignored"
+              value="0"
+              c:identifier="GTK_BUTTON_IGNORED"
+              glib:nick="ignored"/>
+      <member name="selects"
+              value="1"
+              c:identifier="GTK_BUTTON_SELECTS"
+              glib:nick="selects"/>
+      <member name="drags"
+              value="2"
+              c:identifier="GTK_BUTTON_DRAGS"
+              glib:nick="drags"/>
+      <member name="expands"
+              value="4"
+              c:identifier="GTK_BUTTON_EXPANDS"
+              glib:nick="expands"/>
+    </bitfield>
+    <class name="ButtonBox"
+           c:type="GtkButtonBox"
+           parent="Box"
+           abstract="1"
+           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"/>
+      <method name="get_layout" c:identifier="gtk_button_box_get_layout">
+        <return-value transfer-ownership="full">
+          <type name="ButtonBoxStyle" c:type="GtkButtonBoxStyle"/>
+        </return-value>
+      </method>
+      <method name="set_layout" c:identifier="gtk_button_box_set_layout">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layout_style" transfer-ownership="none">
+            <type name="ButtonBoxStyle" c:type="GtkButtonBoxStyle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_secondary"
+              c:identifier="gtk_button_box_get_child_secondary"
+              doc="Returns whether @child should appear in a secondary group of children."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </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="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_child_size"
+              c:identifier="gtk_button_box_set_child_size">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="min_height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_child_ipadding"
+              c:identifier="gtk_button_box_set_child_ipadding">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ipad_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="ipad_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_size"
+              c:identifier="gtk_button_box_get_child_size">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_width"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="min_height"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_ipadding"
+              c:identifier="gtk_button_box_get_child_ipadding">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ipad_x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="ipad_y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="layout-style" writable="1">
+        <type name="ButtonBoxStyle" c:type="GtkButtonBoxStyle"/>
+      </property>
+      <field name="box">
+        <type name="Box" c:type="GtkBox"/>
+      </field>
+      <field name="child_min_width">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="child_min_height">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="child_ipad_x">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="child_ipad_y">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="layout_style">
+        <type name="ButtonBoxStyle" c:type="GtkButtonBoxStyle"/>
+      </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>
+    <enumeration name="ButtonBoxStyle"
+                 glib:type-name="GtkButtonBoxStyle"
+                 glib:get-type="gtk_button_box_style_get_type"
+                 c:type="GtkButtonBoxStyle">
+      <member name="default_style"
+              value="0"
+              c:identifier="GTK_BUTTONBOX_DEFAULT_STYLE"
+              glib:nick="default-style"/>
+      <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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_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">
+      <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="CList"
+           c:type="GtkCList"
+           parent="Container"
+           glib:type-name="GtkCList"
+           glib:get-type="gtk_clist_get_type"
+           glib:type-struct="CListClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_clist_new">
+        <return-value transfer-ownership="full">
+          <type name="CList" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="columns" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_titles"
+                   c:identifier="gtk_clist_new_with_titles">
+        <return-value transfer-ownership="full">
+          <type name="CList" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="columns" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="titles" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="refresh">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="resync_selection">
+        <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>
+      </virtual-method>
+      <virtual-method name="selection_find">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row_number" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="row_list_element" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_row">
+        <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>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="clist_row" transfer-ownership="none">
+            <type name="CListRow" c:type="GtkCListRow*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_drag_highlight">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="target_row" transfer-ownership="none">
+            <type name="CListRow" c:type="GtkCListRow*"/>
+          </parameter>
+          <parameter name="target_row_number" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="drag_pos" transfer-ownership="none">
+            <type name="CListDragPos" c:type="GtkCListDragPos"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="clear" invoker="clear">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="fake_unselect_all">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="sort_list">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="insert_row">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </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="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_cell_contents">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clist_row" transfer-ownership="none">
+            <type name="CListRow" c:type="GtkCListRow*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="CellType" c:type="GtkCellType"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="pixmap" transfer-ownership="none">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="cell_size_request">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clist_row" transfer-ownership="none">
+            <type name="CListRow" c:type="GtkCListRow*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="requisition" transfer-ownership="none">
+            <type name="Requisition" c:type="GtkRequisition*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_hadjustment" c:identifier="gtk_clist_set_hadjustment">
+        <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>
+      </method>
+      <method name="set_vadjustment" c:identifier="gtk_clist_set_vadjustment">
+        <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>
+      </method>
+      <method name="get_hadjustment" c:identifier="gtk_clist_get_hadjustment">
+        <return-value transfer-ownership="full">
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_vadjustment" c:identifier="gtk_clist_get_vadjustment">
+        <return-value transfer-ownership="full">
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="set_shadow_type" c:identifier="gtk_clist_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_selection_mode"
+              c:identifier="gtk_clist_set_selection_mode">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="SelectionMode" c:type="GtkSelectionMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_reorderable" c:identifier="gtk_clist_set_reorderable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="reorderable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_drag_icons"
+              c:identifier="gtk_clist_set_use_drag_icons">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_icons" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_button_actions"
+              c:identifier="gtk_clist_set_button_actions">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="button" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="button_actions" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="freeze" c:identifier="gtk_clist_freeze">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="thaw" c:identifier="gtk_clist_thaw">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="column_titles_show"
+              c:identifier="gtk_clist_column_titles_show">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="column_titles_hide"
+              c:identifier="gtk_clist_column_titles_hide">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="column_title_active"
+              c:identifier="gtk_clist_column_title_active">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="column_title_passive"
+              c:identifier="gtk_clist_column_title_passive">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="column_titles_active"
+              c:identifier="gtk_clist_column_titles_active">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="column_titles_passive"
+              c:identifier="gtk_clist_column_titles_passive">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_column_title"
+              c:identifier="gtk_clist_set_column_title">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="title" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_title"
+              c:identifier="gtk_clist_get_column_title">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_widget"
+              c:identifier="gtk_clist_set_column_widget">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_widget"
+              c:identifier="gtk_clist_get_column_widget">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_justification"
+              c:identifier="gtk_clist_set_column_justification">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="justification" transfer-ownership="none">
+            <type name="Justification" c:type="GtkJustification"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_visibility"
+              c:identifier="gtk_clist_set_column_visibility">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="visible" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_resizeable"
+              c:identifier="gtk_clist_set_column_resizeable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="resizeable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_auto_resize"
+              c:identifier="gtk_clist_set_column_auto_resize">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="auto_resize" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="columns_autosize"
+              c:identifier="gtk_clist_columns_autosize">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="optimal_column_width"
+              c:identifier="gtk_clist_optimal_column_width">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_width"
+              c:identifier="gtk_clist_set_column_width">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_min_width"
+              c:identifier="gtk_clist_set_column_min_width">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="min_width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_column_max_width"
+              c:identifier="gtk_clist_set_column_max_width">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="max_width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_height" c:identifier="gtk_clist_set_row_height">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="height" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="moveto" c:identifier="gtk_clist_moveto">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="row_align" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="col_align" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="row_is_visible" c:identifier="gtk_clist_row_is_visible">
+        <return-value transfer-ownership="full">
+          <type name="Visibility" c:type="GtkVisibility"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cell_type" c:identifier="gtk_clist_get_cell_type">
+        <return-value transfer-ownership="full">
+          <type name="CellType" c:type="GtkCellType"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text" c:identifier="gtk_clist_set_text">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text" c:identifier="gtk_clist_get_text">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pixmap" c:identifier="gtk_clist_set_pixmap">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="pixmap" transfer-ownership="none">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none" allow-none="1">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixmap" c:identifier="gtk_clist_get_pixmap">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="pixmap" transfer-ownership="none">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap**"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pixtext" c:identifier="gtk_clist_set_pixtext">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="pixmap" transfer-ownership="none">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixtext" c:identifier="gtk_clist_get_pixtext">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="spacing" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="pixmap" transfer-ownership="none">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap**"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_foreground" c:identifier="gtk_clist_set_foreground">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_background" c:identifier="gtk_clist_set_background">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cell_style" c:identifier="gtk_clist_set_cell_style">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="style" transfer-ownership="none">
+            <type name="Style" c:type="GtkStyle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cell_style" c:identifier="gtk_clist_get_cell_style">
+        <return-value transfer-ownership="full">
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_style" c:identifier="gtk_clist_set_row_style">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="style" transfer-ownership="none">
+            <type name="Style" c:type="GtkStyle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_style" c:identifier="gtk_clist_get_row_style">
+        <return-value transfer-ownership="full">
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shift" c:identifier="gtk_clist_set_shift">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="vertical" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="horizontal" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_selectable" c:identifier="gtk_clist_set_selectable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="selectable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selectable" c:identifier="gtk_clist_get_selectable">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend" c:identifier="gtk_clist_prepend">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append" c:identifier="gtk_clist_append">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert" c:identifier="gtk_clist_insert">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove" c:identifier="gtk_clist_remove">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_data" c:identifier="gtk_clist_set_row_data">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_row_data_full"
+              c:identifier="gtk_clist_set_row_data_full">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_data" c:identifier="gtk_clist_get_row_data">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_row_from_data"
+              c:identifier="gtk_clist_find_row_from_data">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_row" c:identifier="gtk_clist_select_row">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect_row" c:identifier="gtk_clist_unselect_row">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="undo_selection" c:identifier="gtk_clist_undo_selection">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="clear" c:identifier="gtk_clist_clear">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_selection_info"
+              c:identifier="gtk_clist_get_selection_info">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </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="row" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="column" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_all" c:identifier="gtk_clist_select_all">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unselect_all" c:identifier="gtk_clist_unselect_all">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="swap_rows" c:identifier="gtk_clist_swap_rows">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row1" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="row2" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="row_move" c:identifier="gtk_clist_row_move">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source_row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="dest_row" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_compare_func"
+              c:identifier="gtk_clist_set_compare_func">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cmp_func" transfer-ownership="none" scope="call">
+            <type name="CListCompareFunc" c:type="GtkCListCompareFunc"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sort_column" c:identifier="gtk_clist_set_sort_column">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sort_type" c:identifier="gtk_clist_set_sort_type">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_type" transfer-ownership="none">
+            <type name="SortType" c:type="GtkSortType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sort" c:identifier="gtk_clist_sort">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_auto_sort" c:identifier="gtk_clist_set_auto_sort">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="auto_sort" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="n-columns" writable="1" construct-only="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="reorderable" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="row-height" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="selection-mode" writable="1">
+        <type name="SelectionMode" c:type="GtkSelectionMode"/>
+      </property>
+      <property name="shadow-type" writable="1">
+        <type name="ShadowType" c:type="GtkShadowType"/>
+      </property>
+      <property name="sort-type" writable="1">
+        <type name="SortType" c:type="GtkSortType"/>
+      </property>
+      <property name="titles-active" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="use-drag-icons" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="flags">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="reserved1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="reserved2">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="freeze_count">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="internal_allocation">
+        <type name="Gdk.Rectangle" c:type="GdkRectangle"/>
+      </field>
+      <field name="rows">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="row_height">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="row_list">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="row_list_end">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="columns">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="column_title_area">
+        <type name="Gdk.Rectangle" c:type="GdkRectangle"/>
+      </field>
+      <field name="title_window">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="column">
+        <type name="CListColumn" c:type="GtkCListColumn*"/>
+      </field>
+      <field name="clist_window">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="clist_window_width">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="clist_window_height">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="hoffset">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="voffset">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="shadow_type">
+        <type name="ShadowType" c:type="GtkShadowType"/>
+      </field>
+      <field name="selection_mode">
+        <type name="SelectionMode" c:type="GtkSelectionMode"/>
+      </field>
+      <field name="selection">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="selection_end">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="undo_selection">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="undo_unselection">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="undo_anchor">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="button_actions">
+        <array zero-terminated="0" c:type="guint8" fixed-size="5">
+          <type name="uint8"/>
+        </array>
+      </field>
+      <field name="drag_button">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="click_cell">
+        <type name="CListCellInfo" c:type="GtkCListCellInfo"/>
+      </field>
+      <field name="hadjustment">
+        <type name="Adjustment" c:type="GtkAdjustment*"/>
+      </field>
+      <field name="vadjustment">
+        <type name="Adjustment" c:type="GtkAdjustment*"/>
+      </field>
+      <field name="xor_gc">
+        <type name="Gdk.GC" c:type="GdkGC*"/>
+      </field>
+      <field name="fg_gc">
+        <type name="Gdk.GC" c:type="GdkGC*"/>
+      </field>
+      <field name="bg_gc">
+        <type name="Gdk.GC" c:type="GdkGC*"/>
+      </field>
+      <field name="cursor_drag">
+        <type name="Gdk.Cursor" c:type="GdkCursor*"/>
+      </field>
+      <field name="x_drag">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="focus_row">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="focus_header_column">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="anchor">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="anchor_state">
+        <type name="StateType" c:type="GtkStateType"/>
+      </field>
+      <field name="drag_pos">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="htimer">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="vtimer">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="sort_type">
+        <type name="SortType" c:type="GtkSortType"/>
+      </field>
+      <field name="compare">
+        <type name="CListCompareFunc" c:type="GtkCListCompareFunc"/>
+      </field>
+      <field name="sort_column">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="drag_highlight_row">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="drag_highlight_pos">
+        <type name="CListDragPos" c:type="GtkCListDragPos"/>
+      </field>
+      <glib:signal name="abort-column-resize">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="click-column">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="end-selection">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="extend-selection">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="ScrollType" c:type="GtkScrollType"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="resize-column">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-move">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="scroll-horizontal">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="ScrollType" c:type="GtkScrollType"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="scroll-vertical">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="ScrollType" c:type="GtkScrollType"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="select-all">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="select-row">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="set-scroll-adjustments">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Adjustment" c:type="GtkAdjustment"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="Adjustment" c:type="GtkAdjustment"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="start-selection">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="toggle-add-mode">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="toggle-focus-row">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="undo-selection">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unselect-all">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unselect-row">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="CListCellInfo" c:type="GtkCListCellInfo">
+      <field name="row" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="column" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+    </record>
+    <record name="CListClass"
+            c:type="GtkCListClass"
+            glib:is-gtype-struct-for="CList">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+      <field name="set_scroll_adjustments">
+        <callback name="set_scroll_adjustments"
+                  c:type="set_scroll_adjustments">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </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="refresh">
+        <callback name="refresh" c:type="refresh">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_row">
+        <callback name="select_row" c:type="select_row">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.Event" c:type="GdkEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unselect_row">
+        <callback name="unselect_row" c:type="unselect_row">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.Event" c:type="GdkEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_move">
+        <callback name="row_move" c:type="row_move">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+            <parameter name="source_row" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="dest_row" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="click_column">
+        <callback name="click_column" c:type="click_column">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="resize_column">
+        <callback name="resize_column" c:type="resize_column">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="width" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="toggle_focus_row">
+        <callback name="toggle_focus_row" c:type="toggle_focus_row">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_all">
+        <callback name="select_all" c:type="select_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unselect_all">
+        <callback name="unselect_all" c:type="unselect_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="undo_selection">
+        <callback name="undo_selection" c:type="undo_selection">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start_selection">
+        <callback name="start_selection" c:type="start_selection">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="end_selection">
+        <callback name="end_selection" c:type="end_selection">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="extend_selection">
+        <callback name="extend_selection" c:type="extend_selection">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+            <parameter name="scroll_type" transfer-ownership="none">
+              <type name="ScrollType" c:type="GtkScrollType"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <type name="float" c:type="gfloat"/>
+            </parameter>
+            <parameter name="auto_start_selection" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="scroll_horizontal">
+        <callback name="scroll_horizontal" c:type="scroll_horizontal">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+            <parameter name="scroll_type" transfer-ownership="none">
+              <type name="ScrollType" c:type="GtkScrollType"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <type name="float" c:type="gfloat"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="scroll_vertical">
+        <callback name="scroll_vertical" c:type="scroll_vertical">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+            <parameter name="scroll_type" transfer-ownership="none">
+              <type name="ScrollType" c:type="GtkScrollType"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <type name="float" c:type="gfloat"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="toggle_add_mode">
+        <callback name="toggle_add_mode" c:type="toggle_add_mode">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="abort_column_resize">
+        <callback name="abort_column_resize" c:type="abort_column_resize">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="resync_selection">
+        <callback name="resync_selection" c:type="resync_selection">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.Event" c:type="GdkEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="selection_find">
+        <callback name="selection_find" c:type="selection_find">
+          <return-value transfer-ownership="full">
+            <type name="GLib.List" c:type="GList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+            <parameter name="row_number" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="row_list_element" transfer-ownership="none">
+              <type name="GLib.List" c:type="GList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_row">
+        <callback name="draw_row" c:type="draw_row">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+            <parameter name="area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="clist_row" transfer-ownership="none">
+              <type name="CListRow" c:type="GtkCListRow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_drag_highlight">
+        <callback name="draw_drag_highlight" c:type="draw_drag_highlight">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+            <parameter name="target_row" transfer-ownership="none">
+              <type name="CListRow" c:type="GtkCListRow*"/>
+            </parameter>
+            <parameter name="target_row_number" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="drag_pos" transfer-ownership="none">
+              <type name="CListDragPos" c:type="GtkCListDragPos"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clear">
+        <callback name="clear" c:type="clear">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="fake_unselect_all">
+        <callback name="fake_unselect_all" c:type="fake_unselect_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="sort_list">
+        <callback name="sort_list" c:type="sort_list">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert_row">
+        <callback name="insert_row" c:type="insert_row">
+          <return-value transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="text" transfer-ownership="full">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_row">
+        <callback name="remove_row" c:type="remove_row">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_cell_contents">
+        <callback name="set_cell_contents" c:type="set_cell_contents">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+            <parameter name="clist_row" transfer-ownership="none">
+              <type name="CListRow" c:type="GtkCListRow*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="type" transfer-ownership="none">
+              <type name="CellType" c:type="GtkCellType"/>
+            </parameter>
+            <parameter name="text" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="spacing" transfer-ownership="none">
+              <type name="uint8" c:type="guint8"/>
+            </parameter>
+            <parameter name="pixmap" transfer-ownership="none">
+              <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+            </parameter>
+            <parameter name="mask" transfer-ownership="none">
+              <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cell_size_request">
+        <callback name="cell_size_request" c:type="cell_size_request">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="clist" transfer-ownership="none">
+              <type name="CList" c:type="GtkCList*"/>
+            </parameter>
+            <parameter name="clist_row" transfer-ownership="none">
+              <type name="CListRow" c:type="GtkCListRow*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="requisition" transfer-ownership="none">
+              <type name="Requisition" c:type="GtkRequisition*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="CListColumn" c:type="GtkCListColumn">
+      <field name="title" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="area" writable="1">
+        <type name="Gdk.Rectangle" c:type="GdkRectangle"/>
+      </field>
+      <field name="button" writable="1">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="window" writable="1">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="min_width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max_width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="justification" writable="1">
+        <type name="Justification" c:type="GtkJustification"/>
+      </field>
+      <field name="visible" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="width_set" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="resizeable" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="auto_resize" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="button_passive" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <callback name="CListCompareFunc" c:type="GtkCListCompareFunc">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="gint"/>
+      </return-value>
+      <parameters>
+        <parameter name="clist" transfer-ownership="none">
+          <type name="CList" c:type="GtkCList*"/>
+        </parameter>
+        <parameter name="ptr1" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+        <parameter name="ptr2" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="CListDestInfo" c:type="GtkCListDestInfo">
+      <field name="cell" writable="1">
+        <type name="CListCellInfo" c:type="GtkCListCellInfo"/>
+      </field>
+      <field name="insert_pos" writable="1">
+        <type name="CListDragPos" c:type="GtkCListDragPos"/>
+      </field>
+    </record>
+    <enumeration name="CListDragPos"
+                 glib:type-name="GtkCListDragPos"
+                 glib:get-type="gtk_clist_drag_pos_get_type"
+                 c:type="GtkCListDragPos">
+      <member name="none"
+              value="0"
+              c:identifier="GTK_CLIST_DRAG_NONE"
+              glib:nick="none"/>
+      <member name="before"
+              value="1"
+              c:identifier="GTK_CLIST_DRAG_BEFORE"
+              glib:nick="before"/>
+      <member name="into"
+              value="2"
+              c:identifier="GTK_CLIST_DRAG_INTO"
+              glib:nick="into"/>
+      <member name="after"
+              value="3"
+              c:identifier="GTK_CLIST_DRAG_AFTER"
+              glib:nick="after"/>
+    </enumeration>
+    <record name="CListRow" c:type="GtkCListRow">
+      <field name="cell" writable="1">
+        <type name="Cell" c:type="GtkCell*"/>
+      </field>
+      <field name="state" writable="1">
+        <type name="StateType" c:type="GtkStateType"/>
+      </field>
+      <field name="foreground" writable="1">
+        <type name="Gdk.Color" c:type="GdkColor"/>
+      </field>
+      <field name="background" writable="1">
+        <type name="Gdk.Color" c:type="GdkColor"/>
+      </field>
+      <field name="style" writable="1">
+        <type name="Style" c:type="GtkStyle*"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="destroy" writable="1">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <field name="fg_set" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="bg_set" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="selectable" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <class name="CTree"
+           c:type="GtkCTree"
+           parent="CList"
+           glib:type-name="GtkCTree"
+           glib:get-type="gtk_ctree_get_type"
+           glib:type-struct="CTreeClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new_with_titles"
+                   c:identifier="gtk_ctree_new_with_titles">
+        <return-value transfer-ownership="full">
+          <type name="CTree" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="columns" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="tree_column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="titles" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new" c:identifier="gtk_ctree_new">
+        <return-value transfer-ownership="full">
+          <type name="CTree" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="columns" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="tree_column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="insert_node" c:identifier="gtk_ctree_insert_node">
+        <return-value transfer-ownership="full">
+          <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="pixmap_closed"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask_closed"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+          <parameter name="pixmap_opened"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask_opened"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+          <parameter name="is_leaf" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="expanded" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_node" c:identifier="gtk_ctree_remove_node">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_gnode" c:identifier="gtk_ctree_insert_gnode">
+        <return-value transfer-ownership="full">
+          <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="gnode" transfer-ownership="none">
+            <type name="GLib.Node" c:type="GNode*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="5">
+            <type name="CTreeGNodeFunc" c:type="GtkCTreeGNodeFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="export_to_gnode" c:identifier="gtk_ctree_export_to_gnode">
+        <return-value transfer-ownership="full">
+          <type name="GLib.Node" c:type="GNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="GLib.Node" c:type="GNode*"/>
+          </parameter>
+          <parameter name="sibling" transfer-ownership="none">
+            <type name="GLib.Node" c:type="GNode*"/>
+          </parameter>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="5">
+            <type name="CTreeGNodeFunc" c:type="GtkCTreeGNodeFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="post_recursive" c:identifier="gtk_ctree_post_recursive">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="3">
+            <type name="CTreeFunc" c:type="GtkCTreeFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="post_recursive_to_depth"
+              c:identifier="gtk_ctree_post_recursive_to_depth">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="depth" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="4">
+            <type name="CTreeFunc" c:type="GtkCTreeFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pre_recursive" c:identifier="gtk_ctree_pre_recursive">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="3">
+            <type name="CTreeFunc" c:type="GtkCTreeFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pre_recursive_to_depth"
+              c:identifier="gtk_ctree_pre_recursive_to_depth">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="depth" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="4">
+            <type name="CTreeFunc" c:type="GtkCTreeFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_viewable" c:identifier="gtk_ctree_is_viewable">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="last" c:identifier="gtk_ctree_last">
+        <return-value transfer-ownership="full">
+          <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_node_ptr" c:identifier="gtk_ctree_find_node_ptr">
+        <return-value transfer-ownership="full">
+          <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="ctree_row" transfer-ownership="none">
+            <type name="CTreeRow" c:type="GtkCTreeRow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_nth" c:identifier="gtk_ctree_node_nth">
+        <return-value transfer-ownership="full">
+          <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find" c:identifier="gtk_ctree_find">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_ancestor" c:identifier="gtk_ctree_is_ancestor">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_by_row_data"
+              c:identifier="gtk_ctree_find_by_row_data">
+        <return-value transfer-ownership="full">
+          <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_all_by_row_data"
+              c:identifier="gtk_ctree_find_all_by_row_data">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_by_row_data_custom"
+              c:identifier="gtk_ctree_find_by_row_data_custom">
+        <return-value transfer-ownership="full">
+          <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none" scope="call">
+            <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_all_by_row_data_custom"
+              c:identifier="gtk_ctree_find_all_by_row_data_custom">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none" scope="call">
+            <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_hot_spot" c:identifier="gtk_ctree_is_hot_spot">
+        <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>
+        </parameters>
+      </method>
+      <method name="move" c:identifier="gtk_ctree_move">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="new_parent"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="new_sibling"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="expand" c:identifier="gtk_ctree_expand">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="expand_recursive"
+              c:identifier="gtk_ctree_expand_recursive">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="expand_to_depth" c:identifier="gtk_ctree_expand_to_depth">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="depth" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="collapse" c:identifier="gtk_ctree_collapse">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="collapse_recursive"
+              c:identifier="gtk_ctree_collapse_recursive">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="collapse_to_depth"
+              c:identifier="gtk_ctree_collapse_to_depth">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="depth" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="toggle_expansion"
+              c:identifier="gtk_ctree_toggle_expansion">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="toggle_expansion_recursive"
+              c:identifier="gtk_ctree_toggle_expansion_recursive">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select" c:identifier="gtk_ctree_select">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_recursive"
+              c:identifier="gtk_ctree_select_recursive">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect" c:identifier="gtk_ctree_unselect">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect_recursive"
+              c:identifier="gtk_ctree_unselect_recursive">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="real_select_recursive"
+              c:identifier="gtk_ctree_real_select_recursive">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="state" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_set_text" c:identifier="gtk_ctree_node_set_text">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_set_pixmap" c:identifier="gtk_ctree_node_set_pixmap">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="pixmap" transfer-ownership="none">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none" allow-none="1">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_set_pixtext"
+              c:identifier="gtk_ctree_node_set_pixtext">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="pixmap" transfer-ownership="none">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none" allow-none="1">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_node_info" c:identifier="gtk_ctree_set_node_info">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="uint8" c:type="guint8"/>
+          </parameter>
+          <parameter name="pixmap_closed"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask_closed"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+          <parameter name="pixmap_opened"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask_opened"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+          <parameter name="is_leaf" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="expanded" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_set_shift" c:identifier="gtk_ctree_node_set_shift">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="vertical" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="horizontal" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_set_selectable"
+              c:identifier="gtk_ctree_node_set_selectable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="selectable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_get_selectable"
+              c:identifier="gtk_ctree_node_get_selectable">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_get_cell_type"
+              c:identifier="gtk_ctree_node_get_cell_type">
+        <return-value transfer-ownership="full">
+          <type name="CellType" c:type="GtkCellType"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_get_text" c:identifier="gtk_ctree_node_get_text">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_get_pixmap" c:identifier="gtk_ctree_node_get_pixmap">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="pixmap" transfer-ownership="none">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap**"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_get_pixtext"
+              c:identifier="gtk_ctree_node_get_pixtext">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="spacing" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="pixmap" transfer-ownership="none">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap**"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_node_info" c:identifier="gtk_ctree_get_node_info">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="spacing" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="pixmap_closed" transfer-ownership="none">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap**"/>
+          </parameter>
+          <parameter name="mask_closed" transfer-ownership="none">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap**"/>
+          </parameter>
+          <parameter name="pixmap_opened" transfer-ownership="none">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap**"/>
+          </parameter>
+          <parameter name="mask_opened" transfer-ownership="none">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap**"/>
+          </parameter>
+          <parameter name="is_leaf" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="expanded" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_set_row_style"
+              c:identifier="gtk_ctree_node_set_row_style">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="style" transfer-ownership="none">
+            <type name="Style" c:type="GtkStyle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_get_row_style"
+              c:identifier="gtk_ctree_node_get_row_style">
+        <return-value transfer-ownership="full">
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_set_cell_style"
+              c:identifier="gtk_ctree_node_set_cell_style">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="style" transfer-ownership="none">
+            <type name="Style" c:type="GtkStyle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_get_cell_style"
+              c:identifier="gtk_ctree_node_get_cell_style">
+        <return-value transfer-ownership="full">
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_set_foreground"
+              c:identifier="gtk_ctree_node_set_foreground">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_set_background"
+              c:identifier="gtk_ctree_node_set_background">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_set_row_data"
+              c:identifier="gtk_ctree_node_set_row_data">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_set_row_data_full"
+              c:identifier="gtk_ctree_node_set_row_data_full">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_get_row_data"
+              c:identifier="gtk_ctree_node_get_row_data">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_moveto" c:identifier="gtk_ctree_node_moveto">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="row_align" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="col_align" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="node_is_visible" c:identifier="gtk_ctree_node_is_visible">
+        <return-value transfer-ownership="full">
+          <type name="Visibility" c:type="GtkVisibility"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_indent" c:identifier="gtk_ctree_set_indent">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="indent" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_spacing" c:identifier="gtk_ctree_set_spacing">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_show_stub" c:identifier="gtk_ctree_set_show_stub">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_stub" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_line_style" c:identifier="gtk_ctree_set_line_style">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="line_style" transfer-ownership="none">
+            <type name="CTreeLineStyle" c:type="GtkCTreeLineStyle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_expander_style"
+              c:identifier="gtk_ctree_set_expander_style">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="expander_style" transfer-ownership="none">
+            <type name="CTreeExpanderStyle" c:type="GtkCTreeExpanderStyle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_drag_compare_func"
+              c:identifier="gtk_ctree_set_drag_compare_func">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cmp_func" transfer-ownership="none" scope="call">
+            <type name="CTreeCompareDragFunc"
+                  c:type="GtkCTreeCompareDragFunc"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sort_node" c:identifier="gtk_ctree_sort_node">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="sort_recursive" c:identifier="gtk_ctree_sort_recursive">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="node" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="expander-style" writable="1">
+        <type name="CTreeExpanderStyle" c:type="GtkCTreeExpanderStyle"/>
+      </property>
+      <property name="indent" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="line-style" writable="1">
+        <type name="CTreeLineStyle" c:type="GtkCTreeLineStyle"/>
+      </property>
+      <property name="n-columns" writable="1" construct-only="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="show-stub" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="spacing" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="tree-column" writable="1" construct-only="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="clist">
+        <type name="CList" c:type="GtkCList"/>
+      </field>
+      <field name="lines_gc">
+        <type name="Gdk.GC" c:type="GdkGC*"/>
+      </field>
+      <field name="tree_indent">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="tree_spacing">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="tree_column">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="line_style" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="expander_style" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="show_stub" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="drag_compare">
+        <type name="CTreeCompareDragFunc" c:type="GtkCTreeCompareDragFunc"/>
+      </field>
+      <glib:signal name="change-focus-row-expansion">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="CTreeExpansionType" c:type="GtkCTreeExpansionType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="tree-collapse">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="tree-expand">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="tree-move">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="tree-select-row">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="tree-unselect-row">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="CTreeNode" c:type="GtkCTreeNode"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="CTreeClass"
+            c:type="GtkCTreeClass"
+            glib:is-gtype-struct-for="CTree">
+      <field name="parent_class">
+        <type name="CListClass" c:type="GtkCListClass"/>
+      </field>
+      <field name="tree_select_row">
+        <callback name="tree_select_row" c:type="tree_select_row">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="ctree" transfer-ownership="none">
+              <type name="CTree" c:type="GtkCTree*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="tree_unselect_row">
+        <callback name="tree_unselect_row" c:type="tree_unselect_row">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="ctree" transfer-ownership="none">
+              <type name="CTree" c:type="GtkCTree*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="tree_expand">
+        <callback name="tree_expand" c:type="tree_expand">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="ctree" transfer-ownership="none">
+              <type name="CTree" c:type="GtkCTree*"/>
+            </parameter>
+            <parameter name="node" transfer-ownership="none">
+              <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="tree_collapse">
+        <callback name="tree_collapse" c:type="tree_collapse">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="ctree" transfer-ownership="none">
+              <type name="CTree" c:type="GtkCTree*"/>
+            </parameter>
+            <parameter name="node" transfer-ownership="none">
+              <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="tree_move">
+        <callback name="tree_move" c:type="tree_move">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="ctree" transfer-ownership="none">
+              <type name="CTree" c:type="GtkCTree*"/>
+            </parameter>
+            <parameter name="node" transfer-ownership="none">
+              <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+            </parameter>
+            <parameter name="new_parent" transfer-ownership="none">
+              <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+            </parameter>
+            <parameter name="new_sibling" transfer-ownership="none">
+              <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="change_focus_row_expansion">
+        <callback name="change_focus_row_expansion"
+                  c:type="change_focus_row_expansion">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="ctree" transfer-ownership="none">
+              <type name="CTree" c:type="GtkCTree*"/>
+            </parameter>
+            <parameter name="action" transfer-ownership="none">
+              <type name="CTreeExpansionType" c:type="GtkCTreeExpansionType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <callback name="CTreeCompareDragFunc" c:type="GtkCTreeCompareDragFunc">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ctree" transfer-ownership="none">
+          <type name="CTree" c:type="GtkCTree*"/>
+        </parameter>
+        <parameter name="source_node" transfer-ownership="none">
+          <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+        </parameter>
+        <parameter name="new_parent" transfer-ownership="none">
+          <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+        </parameter>
+        <parameter name="new_sibling" transfer-ownership="none">
+          <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="CTreeExpanderStyle"
+                 glib:type-name="GtkCTreeExpanderStyle"
+                 glib:get-type="gtk_ctree_expander_style_get_type"
+                 c:type="GtkCTreeExpanderStyle">
+      <member name="none"
+              value="0"
+              c:identifier="GTK_CTREE_EXPANDER_NONE"
+              glib:nick="none"/>
+      <member name="square"
+              value="1"
+              c:identifier="GTK_CTREE_EXPANDER_SQUARE"
+              glib:nick="square"/>
+      <member name="triangle"
+              value="2"
+              c:identifier="GTK_CTREE_EXPANDER_TRIANGLE"
+              glib:nick="triangle"/>
+      <member name="circular"
+              value="3"
+              c:identifier="GTK_CTREE_EXPANDER_CIRCULAR"
+              glib:nick="circular"/>
+    </enumeration>
+    <enumeration name="CTreeExpansionType"
+                 glib:type-name="GtkCTreeExpansionType"
+                 glib:get-type="gtk_ctree_expansion_type_get_type"
+                 c:type="GtkCTreeExpansionType">
+      <member name="expand"
+              value="0"
+              c:identifier="GTK_CTREE_EXPANSION_EXPAND"
+              glib:nick="expand"/>
+      <member name="expand_recursive"
+              value="1"
+              c:identifier="GTK_CTREE_EXPANSION_EXPAND_RECURSIVE"
+              glib:nick="expand-recursive"/>
+      <member name="collapse"
+              value="2"
+              c:identifier="GTK_CTREE_EXPANSION_COLLAPSE"
+              glib:nick="collapse"/>
+      <member name="collapse_recursive"
+              value="3"
+              c:identifier="GTK_CTREE_EXPANSION_COLLAPSE_RECURSIVE"
+              glib:nick="collapse-recursive"/>
+      <member name="toggle"
+              value="4"
+              c:identifier="GTK_CTREE_EXPANSION_TOGGLE"
+              glib:nick="toggle"/>
+      <member name="toggle_recursive"
+              value="5"
+              c:identifier="GTK_CTREE_EXPANSION_TOGGLE_RECURSIVE"
+              glib:nick="toggle-recursive"/>
+    </enumeration>
+    <callback name="CTreeFunc" c:type="GtkCTreeFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="ctree" transfer-ownership="none">
+          <type name="CTree" c:type="GtkCTree*"/>
+        </parameter>
+        <parameter name="node" transfer-ownership="none">
+          <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="CTreeGNodeFunc" c:type="GtkCTreeGNodeFunc">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ctree" transfer-ownership="none">
+          <type name="CTree" c:type="GtkCTree*"/>
+        </parameter>
+        <parameter name="depth" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="gnode" transfer-ownership="none">
+          <type name="GLib.Node" c:type="GNode*"/>
+        </parameter>
+        <parameter name="cnode" transfer-ownership="none">
+          <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="CTreeLineStyle"
+                 glib:type-name="GtkCTreeLineStyle"
+                 glib:get-type="gtk_ctree_line_style_get_type"
+                 c:type="GtkCTreeLineStyle">
+      <member name="none"
+              value="0"
+              c:identifier="GTK_CTREE_LINES_NONE"
+              glib:nick="none"/>
+      <member name="solid"
+              value="1"
+              c:identifier="GTK_CTREE_LINES_SOLID"
+              glib:nick="solid"/>
+      <member name="dotted"
+              value="2"
+              c:identifier="GTK_CTREE_LINES_DOTTED"
+              glib:nick="dotted"/>
+      <member name="tabbed"
+              value="3"
+              c:identifier="GTK_CTREE_LINES_TABBED"
+              glib:nick="tabbed"/>
+    </enumeration>
+    <record name="CTreeNode" c:type="GtkCTreeNode">
+      <field name="list" writable="1">
+        <type name="GLib.List" c:type="GList"/>
+      </field>
+    </record>
+    <enumeration name="CTreePos"
+                 glib:type-name="GtkCTreePos"
+                 glib:get-type="gtk_ctree_pos_get_type"
+                 c:type="GtkCTreePos">
+      <member name="before"
+              value="0"
+              c:identifier="GTK_CTREE_POS_BEFORE"
+              glib:nick="before"/>
+      <member name="as_child"
+              value="1"
+              c:identifier="GTK_CTREE_POS_AS_CHILD"
+              glib:nick="as-child"/>
+      <member name="after"
+              value="2"
+              c:identifier="GTK_CTREE_POS_AFTER"
+              glib:nick="after"/>
+    </enumeration>
+    <record name="CTreeRow" c:type="GtkCTreeRow">
+      <field name="row" writable="1">
+        <type name="CListRow" c:type="GtkCListRow"/>
+      </field>
+      <field name="parent" writable="1">
+        <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+      </field>
+      <field name="sibling" writable="1">
+        <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+      </field>
+      <field name="children" writable="1">
+        <type name="CTreeNode" c:type="GtkCTreeNode*"/>
+      </field>
+      <field name="pixmap_closed" writable="1">
+        <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+      </field>
+      <field name="mask_closed" writable="1">
+        <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+      </field>
+      <field name="pixmap_opened" writable="1">
+        <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+      </field>
+      <field name="mask_opened" writable="1">
+        <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+      </field>
+      <field name="level" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="is_leaf" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="expanded" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <class name="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"/>
+      <constructor name="new"
+                   c:identifier="gtk_calendar_new"
+                   doc="Creates a new calendar, with the current date being selected.">
+        <return-value transfer-ownership="full">
+          <type name="Calendar" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="select_month"
+              c:identifier="gtk_calendar_select_month"
+              doc="Shifts the calendar to a different month.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="month" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="year" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_day"
+              c:identifier="gtk_calendar_select_day"
+              doc="the currently selected day.
+Selects a day from the current month.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="day" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="mark_day"
+              c:identifier="gtk_calendar_mark_day"
+              doc="Places a visual marker on a particular day.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="day" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unmark_day"
+              c:identifier="gtk_calendar_unmark_day"
+              doc="Removes the visual marker from a particular day.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="day" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_marks"
+              c:identifier="gtk_calendar_clear_marks"
+              doc="Remove all visual markers.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_display_options"
+              c:identifier="gtk_calendar_set_display_options"
+              doc="Sets display options (whether to display the heading and the month
+headings)."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="CalendarDisplayOptions"
+                  c:type="GtkCalendarDisplayOptions"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_display_options"
+              c:identifier="gtk_calendar_get_display_options"
+              doc="Returns the current display options of @calendar."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="CalendarDisplayOptions"
+                c:type="GtkCalendarDisplayOptions"/>
+        </return-value>
+      </method>
+      <method name="display_options"
+              c:identifier="gtk_calendar_display_options"
+              doc="Sets display options (whether to display the heading and the month headings)."
+              deprecated="Use gtk_calendar_set_display_options() instead"
+              deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="CalendarDisplayOptions"
+                  c:type="GtkCalendarDisplayOptions"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_date"
+              c:identifier="gtk_calendar_get_date"
+              doc="Obtains the selected date from a #GtkCalendar.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="year"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the year number, or %NULL">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+          <parameter name="month"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="or %NULL">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+          <parameter name="day"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="or %NULL">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_detail_func"
+              c:identifier="gtk_calendar_set_detail_func"
+              doc="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."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="CalendarDetailFunc" c:type="GtkCalendarDetailFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_detail_width_chars"
+              c:identifier="gtk_calendar_set_detail_width_chars"
+              doc="Updates the width of detail cells.
+See #GtkCalendar:detail-width-chars."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="chars" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_detail_height_rows"
+              c:identifier="gtk_calendar_set_detail_height_rows"
+              doc="Updates the height of detail cells.
+See #GtkCalendar:detail-height-rows."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rows" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_detail_width_chars"
+              c:identifier="gtk_calendar_get_detail_width_chars"
+              doc="Queries the width of detail cells, in characters.
+See #GtkCalendar:detail-width-chars."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_detail_height_rows"
+              c:identifier="gtk_calendar_get_detail_height_rows"
+              doc="Queries the height of detail cells, in rows.
+See #GtkCalendar:detail-width-chars."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="freeze"
+              c:identifier="gtk_calendar_freeze"
+              doc="Does nothing. Previously locked the display of the calendar until
+it was thawed with gtk_calendar_thaw()."
+              deprecated="2.8:">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="thaw"
+              c:identifier="gtk_calendar_thaw"
+              doc="Does nothing. Previously defrosted a calendar; all the changes made
+since the last gtk_calendar_freeze() were displayed."
+              deprecated="2.8:">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="day"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="detail-height-rows"
+                version="2.14"
+                writable="1"
+                doc="Height of a detail cell, in rows.
+A value of 0 allows any width. See gtk_calendar_set_detail_func().">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="detail-width-chars"
+                version="2.14"
+                writable="1"
+                doc="Width of a detail cell, in characters.
+A value of 0 allows any width. See gtk_calendar_set_detail_func().">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="month"
+                writable="1"
+                doc="The selected month (as a number between 0 and 11).
+This property gets initially set to the current month.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="no-month-change"
+                version="2.4"
+                writable="1"
+                doc="Determines whether the selected month can be changed.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="show-day-names"
+                version="2.4"
+                writable="1"
+                doc="Determines whether day names are displayed.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="show-details"
+                version="2.14"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="show-heading"
+                version="2.4"
+                writable="1"
+                doc="Determines whether a heading is displayed.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="show-week-numbers"
+                version="2.4"
+                writable="1"
+                doc="Determines whether week numbers are displayed.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="year"
+                writable="1"
+                doc="The selected year.
+This property gets initially set to the current year.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="header_style">
+        <type name="Style" c:type="GtkStyle*"/>
+      </field>
+      <field name="label_style">
+        <type name="Style" c:type="GtkStyle*"/>
+      </field>
+      <field name="month">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="year">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="selected_day">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="day_month">
+        <array zero-terminated="0" c:type="gint" fixed-size="6">
+          <type name="int"/>
+        </array>
+      </field>
+      <field name="day">
+        <array zero-terminated="0" c:type="gint" fixed-size="6">
+          <type name="int"/>
+        </array>
+      </field>
+      <field name="num_marked_dates">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="marked_date">
+        <array zero-terminated="0" c:type="gint" fixed-size="31">
+          <type name="int"/>
+        </array>
+      </field>
+      <field name="display_flags">
+        <type name="CalendarDisplayOptions"
+              c:type="GtkCalendarDisplayOptions"/>
+      </field>
+      <field name="marked_date_color">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="31">
+          <type name="Gdk.Color"/>
+        </array>
+      </field>
+      <field name="gc">
+        <type name="Gdk.GC" c:type="GdkGC*"/>
+      </field>
+      <field name="xor_gc">
+        <type name="Gdk.GC" c:type="GdkGC*"/>
+      </field>
+      <field name="focus_row">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="focus_col">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="highlight_row">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="highlight_col">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="priv">
+        <type name="CalendarPrivate" c:type="GtkCalendarPrivate*"/>
+      </field>
+      <field name="grow_space">
+        <array zero-terminated="0" c:type="gchar" fixed-size="32">
+          <type name="int8"/>
+        </array>
+      </field>
+      <field name="gtk_reserved1">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="gtk_reserved2">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="gtk_reserved3">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="gtk_reserved4">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <glib:signal name="day-selected">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="day-selected-double-click">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="month-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="next-month">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="next-year">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="prev-month">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="prev-year">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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" c:type="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"
+                  c:type="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" c:type="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" c:type="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" c:type="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" c:type="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"
+              doc="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."
+              version="2.14">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="calendar" transfer-ownership="none">
+          <type name="Calendar" c:type="GtkCalendar*"/>
+        </parameter>
+        <parameter name="year" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="month" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="day" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="4">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <bitfield name="CalendarDisplayOptions"
+              doc="left side of the calendar.
+The information on which day the calendar week starts is derived from the locale.
+text when details are provided. See gtk_calendar_set_detail_func().
+These options can be used to influence the display and behaviour of a #GtkCalendar."
+              glib:type-name="GtkCalendarDisplayOptions"
+              glib:get-type="gtk_calendar_display_options_get_type"
+              c:type="GtkCalendarDisplayOptions">
+      <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="week_start_monday"
+              value="16"
+              c:identifier="GTK_CALENDAR_WEEK_START_MONDAY"
+              glib:nick="week-start-monday"/>
+      <member name="show_details"
+              value="32"
+              c:identifier="GTK_CALENDAR_SHOW_DETAILS"
+              glib:nick="show-details"/>
+    </bitfield>
+    <record name="CalendarPrivate" c:type="GtkCalendarPrivate">
+    </record>
+    <callback name="Callback"
+              c:type="GtkCallback"
+              doc="The type of the callback functions used for e.g. iterating over
+the children of a container, see gtk_container_foreach().">
+      <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="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="CallbackMarshal" c:type="GtkCallbackMarshal">
+      <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>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="n_args" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="args" transfer-ownership="none">
+          <type name="Arg" c:type="GtkArg*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="Cell" c:type="GtkCell">
+      <field name="type" writable="1">
+        <type name="CellType" c:type="GtkCellType"/>
+      </field>
+      <field name="vertical" writable="1">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="horizontal" writable="1">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="style" writable="1">
+        <type name="Style" c:type="GtkStyle*"/>
+      </field>
+      <union name="u" c:type="u">
+        <field name="text" writable="1">
+          <type name="utf8" c:type="gchar*"/>
+        </field>
+        <record name="pm" c:type="pm">
+          <field name="pixmap" writable="1">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </field>
+          <field name="mask" writable="1">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </field>
+        </record>
+        <record name="pt" c:type="pt">
+          <field name="text" writable="1">
+            <type name="utf8" c:type="gchar*"/>
+          </field>
+          <field name="spacing" writable="1">
+            <type name="uint8" c:type="guint8"/>
+          </field>
+          <field name="pixmap" writable="1">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </field>
+          <field name="mask" writable="1">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </field>
+        </record>
+        <field name="widget" writable="1">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </field>
+      </union>
+    </record>
+    <interface name="CellEditable"
+               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">
+        <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>
+      </virtual-method>
+      <method name="start_editing"
+              c:identifier="gtk_cell_editable_start_editing"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #GdkEvent, or %NULL">
+            <type name="Gdk.Event" c:type="GdkEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="editing_done"
+              c:identifier="gtk_cell_editable_editing_done"
+              doc="Emits the #GtkCellEditable::editing-done signal.">
+        <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="Emits the #GtkCellEditable::remove-widget signal.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="editing-canceled"
+                version="2.20"
+                writable="1"
+                doc="Indicates whether editing on the cell has been canceled.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <glib:signal name="editing-done"
+                   doc="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 ::editing-done.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="remove-widget"
+                   doc="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&apos;s value
+before the widget is removed.
+gtk_cell_editable_remove_widget() is a convenience method
+for emitting ::remove-widget.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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" c:type="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" c:type="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">
+              <type name="Gdk.Event" c:type="GdkEvent*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <interface name="CellLayout"
+               c:type="GtkCellLayout"
+               glib:type-name="GtkCellLayout"
+               glib:get-type="gtk_cell_layout_get_type"
+               glib:type-struct="CellLayoutIface">
+      <virtual-method name="pack_start" invoker="pack_start">
+        <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="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="pack_end" invoker="pack_end">
+        <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="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="clear" invoker="clear">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="add_attribute" invoker="add_attribute">
+        <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="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_cell_data_func" invoker="set_cell_data_func">
+        <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="func" transfer-ownership="none">
+            <type name="CellLayoutDataFunc" c:type="GtkCellLayoutDataFunc"/>
+          </parameter>
+          <parameter name="func_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="clear_attributes" invoker="clear_attributes">
+        <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>
+      </virtual-method>
+      <virtual-method name="reorder" invoker="reorder">
+        <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="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_cells" invoker="get_cells">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </virtual-method>
+      <method name="pack_start"
+              c:identifier="gtk_cell_layout_pack_start"
+              doc="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."
+              version="2.4">
+        <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="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_end"
+              c:identifier="gtk_cell_layout_pack_end"
+              doc="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."
+              version="2.4">
+        <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="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cells"
+              c:identifier="gtk_cell_layout_get_cells"
+              doc="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."
+              version="2.12">
+        <return-value transfer-ownership="container"
+                      doc="a list of cell renderers. The list, but not the">
+          <type name="GLib.List" c:type="GList*">
+            <type name="CellRenderer"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="clear"
+              c:identifier="gtk_cell_layout_clear"
+              doc="Unsets all the mappings on all renderers on @cell_layout and
+removes all renderers from @cell_layout."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_attributes"
+              c:identifier="gtk_cell_layout_set_attributes"
+              doc="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."
+              version="2.4">
+        <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 transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_attribute"
+              c:identifier="gtk_cell_layout_add_attribute"
+              doc="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 &quot;text&quot; attribute of a
+#GtkCellRendererText get its values from column 2."
+              version="2.4">
+        <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="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cell_data_func"
+              c:identifier="gtk_cell_layout_set_cell_data_func"
+              doc="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&apos;s cell renderer(s)
+as appropriate. @func may be %NULL to remove and older one."
+              version="2.4">
+        <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="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <type name="CellLayoutDataFunc" c:type="GtkCellLayoutDataFunc"/>
+          </parameter>
+          <parameter name="func_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_attributes"
+              c:identifier="gtk_cell_layout_clear_attributes"
+              doc="Clears all existing attributes previously set with
+gtk_cell_layout_set_attributes()."
+              version="2.4">
+        <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>
+      </method>
+      <method name="reorder"
+              c:identifier="gtk_cell_layout_reorder"
+              doc="Re-inserts @cell at @position. Note that @cell has already to be packed
+into @cell_layout for this to function properly."
+              version="2.4">
+        <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="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </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="any" 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" c:type="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">
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+            <parameter name="expand" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pack_end">
+        <callback name="pack_end" c:type="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">
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+            <parameter name="expand" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clear">
+        <callback name="clear" c:type="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" c:type="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">
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+            <parameter name="attribute" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_cell_data_func">
+        <callback name="set_cell_data_func" c:type="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">
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+            <parameter name="func" transfer-ownership="none">
+              <type name="CellLayoutDataFunc" c:type="GtkCellLayoutDataFunc"/>
+            </parameter>
+            <parameter name="func_data" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+            <parameter name="destroy" transfer-ownership="none">
+              <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="clear_attributes">
+        <callback name="clear_attributes" c:type="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">
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="reorder">
+        <callback name="reorder" c:type="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">
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_cells">
+        <callback name="get_cells" c:type="get_cells">
+          <return-value transfer-ownership="full">
+            <type name="GLib.List" c:type="GList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="cell_layout" transfer-ownership="none">
+              <type name="CellLayout" c:type="GtkCellLayout*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <record name="CellPixText" c:type="GtkCellPixText">
+      <field name="type" writable="1">
+        <type name="CellType" c:type="GtkCellType"/>
+      </field>
+      <field name="vertical" writable="1">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="horizontal" writable="1">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="style" writable="1">
+        <type name="Style" c:type="GtkStyle*"/>
+      </field>
+      <field name="text" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="spacing" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="pixmap" writable="1">
+        <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+      </field>
+      <field name="mask" writable="1">
+        <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+      </field>
+    </record>
+    <record name="CellPixmap" c:type="GtkCellPixmap">
+      <field name="type" writable="1">
+        <type name="CellType" c:type="GtkCellType"/>
+      </field>
+      <field name="vertical" writable="1">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="horizontal" writable="1">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="style" writable="1">
+        <type name="Style" c:type="GtkStyle*"/>
+      </field>
+      <field name="pixmap" writable="1">
+        <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+      </field>
+      <field name="mask" writable="1">
+        <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+      </field>
+    </record>
+    <class name="CellRenderer"
+           c:type="GtkCellRenderer"
+           parent="Object"
+           abstract="1"
+           glib:type-name="GtkCellRenderer"
+           glib:get-type="gtk_cell_renderer_get_type"
+           glib:type-struct="CellRendererClass">
+      <virtual-method name="get_size" invoker="get_size">
+        <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="cell_area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="x_offset" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y_offset" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </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>
+      </virtual-method>
+      <virtual-method name="render" invoker="render">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Drawable" c:type="GdkDrawable*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="background_area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="cell_area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="expose_area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="CellRendererState" c:type="GtkCellRendererState"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="activate" invoker="activate">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="background_area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="cell_area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="CellRendererState" c:type="GtkCellRendererState"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="start_editing" invoker="start_editing">
+        <return-value transfer-ownership="full">
+          <type name="CellEditable" c:type="GtkCellEditable*"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="background_area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="cell_area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="CellRendererState" c:type="GtkCellRendererState"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_size"
+              c:identifier="gtk_cell_renderer_get_size"
+              doc="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.">
+        <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="cell_area"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The area a cell will be allocated, or %NULL">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="x_offset"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to return x offset of cell relative to @cell_area, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y_offset"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to return y offset of cell relative to @cell_area, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="width"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to return width needed to render a cell, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to return height needed to render a cell, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="render"
+              c:identifier="gtk_cell_renderer_render"
+              doc="padding on the sides)
+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">
+        <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="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="background_area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="cell_area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="expose_area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="CellRendererState" c:type="GtkCellRendererState"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="activate"
+              c:identifier="gtk_cell_renderer_activate"
+              doc="e.g. for #GtkTreeView, a string representation of #GtkTreePath
+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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="background_area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="cell_area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="CellRendererState" c:type="GtkCellRendererState"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start_editing"
+              c:identifier="gtk_cell_renderer_start_editing"
+              doc="e.g. for #GtkTreeView, a string representation of #GtkTreePath
+Passes an activate event to the cell renderer for possible processing.">
+        <return-value transfer-ownership="full">
+          <type name="CellEditable" c:type="GtkCellEditable*"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent*"/>
+          </parameter>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="background_area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="cell_area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="CellRendererState" c:type="GtkCellRendererState"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fixed_size"
+              c:identifier="gtk_cell_renderer_set_fixed_size"
+              doc="Sets the renderer size to be explicit, independent of the properties set.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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="get_fixed_size"
+              c:identifier="gtk_cell_renderer_get_fixed_size"
+              doc="Fills in @width and @height with the appropriate size of @cell.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to fill in with the fixed width of the cell, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to fill in with the fixed height of the cell, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alignment"
+              c:identifier="gtk_cell_renderer_set_alignment"
+              doc="Sets the renderer&apos;s alignment within its available space."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_alignment"
+              c:identifier="gtk_cell_renderer_get_alignment"
+              doc="Fills in @xalign and @yalign with the appropriate values of @cell."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to fill in with the x alignment of the cell, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="yalign"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to fill in with the y alignment of the cell, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_padding"
+              c:identifier="gtk_cell_renderer_set_padding"
+              doc="Sets the renderer&apos;s padding."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xpad" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="ypad" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_padding"
+              c:identifier="gtk_cell_renderer_get_padding"
+              doc="Fills in @xpad and @ypad with the appropriate values of @cell."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xpad"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to fill in with the x padding of the cell, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="ypad"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to fill in with the y padding of the cell, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visible"
+              c:identifier="gtk_cell_renderer_set_visible"
+              doc="Sets the cell renderer&apos;s visibility."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible"
+              c:identifier="gtk_cell_renderer_get_visible"
+              doc="Returns the cell renderer&apos;s visibility."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_sensitive"
+              c:identifier="gtk_cell_renderer_set_sensitive"
+              doc="Sets the cell renderer&apos;s sensitivity."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sensitive" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sensitive"
+              c:identifier="gtk_cell_renderer_get_sensitive"
+              doc="Returns the cell renderer&apos;s sensitivity."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="editing_canceled"
+              c:identifier="gtk_cell_renderer_editing_canceled"
+              doc="Causes the cell renderer to emit the #GtkCellRenderer::editing-canceled
+signal.
+This function is for use only by implementations of cell renderers that
+need to notify the client program that an editing process was canceled
+and the changes were not committed."
+              version="2.4"
+              deprecated="Use gtk_cell_renderer_stop_editing() instead"
+              deprecated-version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop_editing"
+              c:identifier="gtk_cell_renderer_stop_editing"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="canceled" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="cell-background" readable="0" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="cell-background-gdk" writable="1">
+        <type name="Gdk.Color" c:type="GdkColor"/>
+      </property>
+      <property name="cell-background-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="editing">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="height" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="is-expanded" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="is-expander" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="mode" writable="1">
+        <type name="CellRendererMode" c:type="GtkCellRendererMode"/>
+      </property>
+      <property name="sensitive" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="visible" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="width" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="xalign" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="xpad" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="yalign" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="ypad" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="parent">
+        <type name="Object" c:type="GtkObject"/>
+      </field>
+      <field name="xalign">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="yalign">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="width">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="height">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="xpad">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="ypad">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="mode" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="visible" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_expander" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_expanded" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="cell_background_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="sensitive" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="editing" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="editing-canceled"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="editing-started"
+                   doc="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&apos;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);
+}
+}
+]|"
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="editable" transfer-ownership="none">
+            <type name="CellEditable" c:type="GtkCellEditable"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <class name="CellRendererAccel"
+           c:type="GtkCellRendererAccel"
+           parent="CellRendererText"
+           glib:type-name="GtkCellRendererAccel"
+           glib:get-type="gtk_cell_renderer_accel_get_type"
+           glib:type-struct="CellRendererAccelClass">
+      <constructor name="new"
+                   c:identifier="gtk_cell_renderer_accel_new"
+                   doc="Creates a new #GtkCellRendererAccel."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="CellRendererAccel" c:type="GtkCellRenderer*"/>
+        </return-value>
+      </constructor>
+      <property name="accel-key"
+                version="2.10"
+                writable="1"
+                doc="The keyval of the accelerator.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="accel-mode"
+                version="2.10"
+                writable="1"
+                doc="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.">
+        <type name="CellRendererAccelMode" c:type="GtkCellRendererAccelMode"/>
+      </property>
+      <property name="accel-mods"
+                version="2.10"
+                writable="1"
+                doc="The modifier mask of the accelerator.">
+        <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+      </property>
+      <property name="keycode"
+                version="2.10"
+                writable="1"
+                doc="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.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="parent">
+        <type name="CellRendererText" c:type="GtkCellRendererText"/>
+      </field>
+      <field name="accel_key">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="accel_mods">
+        <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+      </field>
+      <field name="keycode">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="accel_mode">
+        <type name="CellRendererAccelMode" c:type="GtkCellRendererAccelMode"/>
+      </field>
+      <field name="edit_widget">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="grab_widget">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="sizing_label">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <glib:signal name="accel-cleared"
+                   doc="Gets emitted when the user has removed the accelerator."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path_string" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="accel-edited"
+                   doc="Gets emitted when the user has selected a new accelerator."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path_string" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="accel_key" transfer-ownership="none">
+            <type name="uint" 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="uint" c:type="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" c:type="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="uint" 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="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="accel_cleared">
+        <callback name="accel_cleared" c:type="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">
+        <callback name="gtk_reserved0" c:type="_gtk_reserved0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_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="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" c:type="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">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="cell_area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="x_offset"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="y_offset"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </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>
+        </callback>
+      </field>
+      <field name="render">
+        <callback name="render" c:type="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">
+              <type name="Gdk.Drawable" c:type="GdkDrawable*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="background_area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="cell_area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="expose_area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="CellRendererState" c:type="GtkCellRendererState"/>
+            </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="cell" transfer-ownership="none">
+              <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.Event" c:type="GdkEvent*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="background_area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="cell_area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="CellRendererState" c:type="GtkCellRendererState"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start_editing">
+        <callback name="start_editing" c:type="start_editing">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="Gdk.Event" c:type="GdkEvent*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="path" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="background_area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="cell_area" transfer-ownership="none">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+            <parameter name="flags" transfer-ownership="none">
+              <type name="CellRendererState" c:type="GtkCellRendererState"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="editing_canceled">
+        <callback name="editing_canceled" c:type="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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="CellRendererCombo"
+           c:type="GtkCellRendererCombo"
+           parent="CellRendererText"
+           glib:type-name="GtkCellRendererCombo"
+           glib:get-type="gtk_cell_renderer_combo_get_type"
+           glib:type-struct="CellRendererComboClass">
+      <constructor name="new"
+                   c:identifier="gtk_cell_renderer_combo_new"
+                   doc="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 &quot;text&quot; property
+on the cell renderer to a string value in the model, thus rendering
+a different string in each row of the #GtkTreeView."
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="CellRendererCombo" c:type="GtkCellRenderer*"/>
+        </return-value>
+      </constructor>
+      <property name="has-entry" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="model"
+                version="2.6"
+                writable="1"
+                doc="Holds a tree model containing the possible values for the combo box.
+Use the text_column property to specify the column holding the values.">
+        <type name="TreeModel" c:type="GtkTreeModel"/>
+      </property>
+      <property name="text-column"
+                version="2.6"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="parent">
+        <type name="CellRendererText" c:type="GtkCellRendererText"/>
+      </field>
+      <field name="model">
+        <type name="TreeModel" c:type="GtkTreeModel*"/>
+      </field>
+      <field name="text_column">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="has_entry">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="focus_out_id">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="changed"
+                   doc="(relative to the tree view model)
+(relative to the combo box model)
+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."
+                   version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path_string" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="new_iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter"/>
+          </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>
+    <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:type="GtkCellRendererPixbuf"
+           parent="CellRenderer"
+           glib:type-name="GtkCellRendererPixbuf"
+           glib:get-type="gtk_cell_renderer_pixbuf_get_type"
+           glib:type-struct="CellRendererPixbufClass">
+      <constructor name="new"
+                   c:identifier="gtk_cell_renderer_pixbuf_new"
+                   doc="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 &quot;pixbuf&quot; property on the cell renderer to a pixbuf value
+in the model, thus rendering a different image in each row of the
+#GtkTreeView.">
+        <return-value transfer-ownership="full">
+          <type name="CellRendererPixbuf" c:type="GtkCellRenderer*"/>
+        </return-value>
+      </constructor>
+      <property name="follow-state"
+                version="2.8"
+                writable="1"
+                doc="Specifies whether the rendered pixbuf should be colorized
+according to the #GtkCellRendererState.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gicon"
+                version="2.14"
+                writable="1"
+                doc="The GIcon representing the icon to display.
+If the icon theme is changed, the image will be updated
+automatically.">
+        <type name="Gio.Icon" c:type="GIcon"/>
+      </property>
+      <property name="icon-name"
+                version="2.8"
+                writable="1"
+                doc="The name of the themed icon to display.
+This property only has an effect if not overridden by &quot;stock_id&quot;
+or &quot;pixbuf&quot; properties.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="pixbuf" writable="1">
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf"/>
+      </property>
+      <property name="pixbuf-expander-closed" writable="1">
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf"/>
+      </property>
+      <property name="pixbuf-expander-open" writable="1">
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf"/>
+      </property>
+      <property name="stock-detail" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="stock-id" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="stock-size" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="parent">
+        <type name="CellRenderer" c:type="GtkCellRenderer"/>
+      </field>
+      <field name="pixbuf">
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+      </field>
+      <field name="pixbuf_expander_open">
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+      </field>
+      <field name="pixbuf_expander_closed">
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+      </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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="CellRendererProgress"
+           c:type="GtkCellRendererProgress"
+           parent="CellRenderer"
+           glib:type-name="GtkCellRendererProgress"
+           glib:get-type="gtk_cell_renderer_progress_get_type"
+           glib:type-struct="CellRendererProgressClass">
+      <constructor name="new"
+                   c:identifier="gtk_cell_renderer_progress_new"
+                   doc="Creates a new #GtkCellRendererProgress."
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="CellRendererProgress" c:type="GtkCellRenderer*"/>
+        </return-value>
+      </constructor>
+      <property name="orientation"
+                version="2.12"
+                writable="1"
+                doc="The &quot;orientation&quot; property controls the direction and growth
+direction of the progress bar (left-to-right, right-to-left,
+top-to-bottom or bottom-to-top).">
+        <type name="ProgressBarOrientation"
+              c:type="GtkProgressBarOrientation"/>
+      </property>
+      <property name="pulse"
+                version="2.12"
+                writable="1"
+                doc="Setting this to a non-negative value causes the cell renderer to
+enter &quot;activity mode&quot;, 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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="text"
+                version="2.6"
+                writable="1"
+                doc="The &quot;text&quot; 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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="text-xalign"
+                version="2.12"
+                writable="1"
+                doc="The &quot;text-xalign&quot; 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.">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="text-yalign"
+                version="2.12"
+                writable="1"
+                doc="The &quot;text-yalign&quot; property controls the vertical alignment of the
+text in the progress bar.  Valid values range from 0 (top) to 1
+(bottom).">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="value"
+                version="2.6"
+                writable="1"
+                doc="The &quot;value&quot; property determines the percentage to which the
+progress bar will be &quot;filled in&quot;.">
+        <type name="int" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="CellRendererProgressPrivate"
+            c:type="GtkCellRendererProgressPrivate">
+    </record>
+    <class name="CellRendererSpin"
+           c:type="GtkCellRendererSpin"
+           parent="CellRendererText"
+           glib:type-name="GtkCellRendererSpin"
+           glib:get-type="gtk_cell_renderer_spin_get_type"
+           glib:type-struct="CellRendererSpinClass">
+      <constructor name="new"
+                   c:identifier="gtk_cell_renderer_spin_new"
+                   doc="Creates a new #GtkCellRendererSpin."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="CellRendererSpin" c:type="GtkCellRenderer*"/>
+        </return-value>
+      </constructor>
+      <property name="adjustment"
+                version="2.10"
+                writable="1"
+                doc="The adjustment that holds the value of the spinbutton.
+This must be non-%NULL for the cell renderer to be editable.">
+        <type name="Adjustment" c:type="GtkAdjustment"/>
+      </property>
+      <property name="climb-rate"
+                version="2.10"
+                writable="1"
+                doc="The acceleration rate when you hold down a button.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="digits"
+                version="2.10"
+                writable="1"
+                doc="The number of decimal places to display.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="parent">
+        <type name="CellRendererText" c:type="GtkCellRendererText"/>
+      </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">
+    </record>
+    <class name="CellRendererSpinner"
+           c:type="GtkCellRendererSpinner"
+           parent="CellRenderer"
+           glib:type-name="GtkCellRendererSpinner"
+           glib:get-type="gtk_cell_renderer_spinner_get_type"
+           glib:type-struct="CellRendererSpinnerClass">
+      <constructor name="new" c:identifier="gtk_cell_renderer_spinner_new">
+        <return-value transfer-ownership="full">
+          <type name="CellRendererSpinner" c:type="GtkCellRenderer*"/>
+        </return-value>
+      </constructor>
+      <property name="active" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="pulse"
+                version="2.20"
+                writable="1"
+                doc="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.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="size"
+                version="2.20"
+                writable="1"
+                doc="The #GtkIconSize value that specifies the size of the rendered spinner.">
+        <type name="IconSize" c:type="GtkIconSize"/>
+      </property>
+      <field name="parent">
+        <type name="CellRenderer" c:type="GtkCellRenderer"/>
+      </field>
+      <field name="priv">
+        <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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="CellRendererSpinnerPrivate"
+            c:type="GtkCellRendererSpinnerPrivate">
+    </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:type="GtkCellRendererText"
+           parent="CellRenderer"
+           glib:type-name="GtkCellRendererText"
+           glib:get-type="gtk_cell_renderer_text_get_type"
+           glib:type-struct="CellRendererTextClass">
+      <constructor name="new"
+                   c:identifier="gtk_cell_renderer_text_new"
+                   doc="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 &quot;text&quot; property on the cell renderer to a string
+value in the model, thus rendering a different string in each row
+of the #GtkTreeView">
+        <return-value transfer-ownership="full">
+          <type name="CellRendererText" 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="Sets the height of a renderer to explicitly be determined by the &quot;font&quot; and
+&quot;y_pad&quot; 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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="number_of_rows" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="align-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="alignment"
+                version="2.10"
+                writable="1"
+                doc="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 &quot;xalign&quot; property of #GtkCellRenderer,
+on the other hand, sets the horizontal alignment of the whole text.">
+        <type name="Pango.Alignment" c:type="PangoAlignment"/>
+      </property>
+      <property name="attributes" writable="1">
+        <type name="Pango.AttrList" c:type="PangoAttrList"/>
+      </property>
+      <property name="background" readable="0" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="background-gdk" writable="1">
+        <type name="Gdk.Color" c:type="GdkColor"/>
+      </property>
+      <property name="background-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="editable" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="editable-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="ellipsize"
+                version="2.6"
+                writable="1"
+                doc="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.">
+        <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+      </property>
+      <property name="ellipsize-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="family" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="family-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="font" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="font-desc" writable="1">
+        <type name="Pango.FontDescription" c:type="PangoFontDescription"/>
+      </property>
+      <property name="foreground" readable="0" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="foreground-gdk" writable="1">
+        <type name="Gdk.Color" c:type="GdkColor"/>
+      </property>
+      <property name="foreground-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="language" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="language-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="markup" readable="0" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="rise" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="rise-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="scale" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="scale-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="single-paragraph-mode" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="size" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="size-points" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="size-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="stretch" writable="1">
+        <type name="Pango.Stretch" c:type="PangoStretch"/>
+      </property>
+      <property name="stretch-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="strikethrough" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="strikethrough-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="style" writable="1">
+        <type name="Pango.Style" c:type="PangoStyle"/>
+      </property>
+      <property name="style-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="text" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="underline" writable="1">
+        <type name="Pango.Underline" c:type="PangoUnderline"/>
+      </property>
+      <property name="underline-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="variant" writable="1">
+        <type name="Pango.Variant" c:type="PangoVariant"/>
+      </property>
+      <property name="variant-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="weight" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="weight-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="width-chars"
+                version="2.6"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="wrap-mode"
+                version="2.8"
+                writable="1"
+                doc="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.">
+        <type name="Pango.WrapMode" c:type="PangoWrapMode"/>
+      </property>
+      <property name="wrap-width"
+                version="2.8"
+                writable="1"
+                doc="Specifies the 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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="parent">
+        <type name="CellRenderer" c:type="GtkCellRenderer"/>
+      </field>
+      <field name="text">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="font">
+        <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
+      </field>
+      <field name="font_scale">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="foreground">
+        <type name="Pango.Color" c:type="PangoColor"/>
+      </field>
+      <field name="background">
+        <type name="Pango.Color" c:type="PangoColor"/>
+      </field>
+      <field name="extra_attrs">
+        <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+      </field>
+      <field name="underline_style">
+        <type name="Pango.Underline" c:type="PangoUnderline"/>
+      </field>
+      <field name="rise">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="fixed_height_rows">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="strikethrough" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="editable" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scale_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="foreground_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="background_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="underline_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="rise_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="strikethrough_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="editable_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="calc_fixed_height" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="edited">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="CellRendererToggle"
+           c:type="GtkCellRendererToggle"
+           parent="CellRenderer"
+           glib:type-name="GtkCellRendererToggle"
+           glib:get-type="gtk_cell_renderer_toggle_get_type"
+           glib:type-struct="CellRendererToggleClass">
+      <constructor name="new"
+                   c:identifier="gtk_cell_renderer_toggle_new"
+                   doc="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 &quot;active&quot; property on the cell renderer to a boolean value
+in the model, thus causing the check button to reflect the state of
+the model.">
+        <return-value transfer-ownership="full">
+          <type name="CellRendererToggle" c:type="GtkCellRenderer*"/>
+        </return-value>
+      </constructor>
+      <method name="get_radio"
+              c:identifier="gtk_cell_renderer_toggle_get_radio"
+              doc="Returns whether we&apos;re rendering radio toggles rather than checkboxes.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_radio"
+              c:identifier="gtk_cell_renderer_toggle_set_radio"
+              doc="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).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="radio" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_active"
+              c:identifier="gtk_cell_renderer_toggle_get_active"
+              doc="Returns whether the cell renderer is active. See
+gtk_cell_renderer_toggle_set_active().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_active"
+              c:identifier="gtk_cell_renderer_toggle_set_active"
+              doc="Activates or deactivates a cell renderer.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_activatable"
+              c:identifier="gtk_cell_renderer_toggle_get_activatable"
+              doc="Returns whether the cell renderer is activatable. See
+gtk_cell_renderer_toggle_set_activatable()."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_activatable"
+              c:identifier="gtk_cell_renderer_toggle_set_activatable"
+              doc="Makes the cell renderer activatable."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="activatable" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="active" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="inconsistent" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="indicator-size" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="radio" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="CellRenderer" c:type="GtkCellRenderer"/>
+      </field>
+      <field name="active" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="activatable" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="radio" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="toggled"
+                   doc="event location
+The ::toggled signal is emitted when the cell is toggled.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="CellText" c:type="GtkCellText">
+      <field name="type" writable="1">
+        <type name="CellType" c:type="GtkCellType"/>
+      </field>
+      <field name="vertical" writable="1">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="horizontal" writable="1">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="style" writable="1">
+        <type name="Style" c:type="GtkStyle*"/>
+      </field>
+      <field name="text" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <enumeration name="CellType"
+                 glib:type-name="GtkCellType"
+                 glib:get-type="gtk_cell_type_get_type"
+                 c:type="GtkCellType">
+      <member name="empty"
+              value="0"
+              c:identifier="GTK_CELL_EMPTY"
+              glib:nick="empty"/>
+      <member name="text"
+              value="1"
+              c:identifier="GTK_CELL_TEXT"
+              glib:nick="text"/>
+      <member name="pixmap"
+              value="2"
+              c:identifier="GTK_CELL_PIXMAP"
+              glib:nick="pixmap"/>
+      <member name="pixtext"
+              value="3"
+              c:identifier="GTK_CELL_PIXTEXT"
+              glib:nick="pixtext"/>
+      <member name="widget"
+              value="4"
+              c:identifier="GTK_CELL_WIDGET"
+              glib:nick="widget"/>
+    </enumeration>
+    <class name="CellView"
+           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"/>
+      <constructor name="new"
+                   c:identifier="gtk_cell_view_new"
+                   doc="Creates a new #GtkCellView widget."
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="CellView" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_text"
+                   c:identifier="gtk_cell_view_new_with_text"
+                   doc="Creates a new #GtkCellView widget, adds a #GtkCellRendererText
+to it, and makes its show @text."
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="CellView" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_markup"
+                   c:identifier="gtk_cell_view_new_with_markup"
+                   doc="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=&quot;PangoMarkupFormat&quot;&gt;Pango text
+markup language&lt;/link&gt;."
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="CellView" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_pixbuf"
+                   c:identifier="gtk_cell_view_new_with_pixbuf"
+                   doc="Creates a new #GtkCellView widget, adds a #GtkCellRendererPixbuf
+to it, and makes its show @pixbuf."
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="CellView" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_model"
+              c:identifier="gtk_cell_view_set_model"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="model"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkTreeModel">
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_model"
+              c:identifier="gtk_cell_view_get_model"
+              doc="Returns the model for @cell_view. If no model is used %NULL is
+returned."
+              version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </return-value>
+      </method>
+      <method name="set_displayed_row"
+              c:identifier="gtk_cell_view_set_displayed_row"
+              doc="Sets the row of the model that is currently displayed
+by the #GtkCellView. If the path is unset, then the
+contents of the cellview &quot;stick&quot; 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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkTreePath or %NULL to unset.">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_displayed_row"
+              c:identifier="gtk_cell_view_get_displayed_row"
+              doc="Returns a #GtkTreePath referring to the currently
+displayed row. If no row is currently displayed,
+%NULL is returned."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+      </method>
+      <method name="get_size_of_row"
+              c:identifier="gtk_cell_view_get_size_of_row"
+              doc="Sets @requisition to the size needed by @cell_view to display
+the model row pointed to by @path."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="requisition" transfer-ownership="none">
+            <type name="Requisition" c:type="GtkRequisition*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_background_color"
+              c:identifier="gtk_cell_view_set_background_color"
+              doc="Sets the background color of @view."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cell_renderers"
+              c:identifier="gtk_cell_view_get_cell_renderers"
+              doc="Returns the cell renderers which have been added to @cell_view.
+renderers has been newly allocated and should be freed with
+g_list_free() when no longer needed."
+              version="2.6"
+              deprecated="use gtk_cell_layout_get_cells() instead."
+              deprecated-version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <property name="background" readable="0" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="background-gdk" writable="1">
+        <type name="Gdk.Color" c:type="GdkColor"/>
+      </property>
+      <property name="background-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="model" writable="1">
+        <type name="TreeModel" c:type="GtkTreeModel"/>
+      </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">
+    </record>
+    <record name="CellWidget" c:type="GtkCellWidget">
+      <field name="type" writable="1">
+        <type name="CellType" c:type="GtkCellType"/>
+      </field>
+      <field name="vertical" writable="1">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="horizontal" writable="1">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="style" writable="1">
+        <type name="Style" c:type="GtkStyle*"/>
+      </field>
+      <field name="widget" writable="1">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+    </record>
+    <class name="CheckButton"
+           c:type="GtkCheckButton"
+           parent="ToggleButton"
+           glib:type-name="GtkCheckButton"
+           glib:get-type="gtk_check_button_get_type"
+           glib:type-struct="CheckButtonClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_check_button_new">
+        <return-value transfer-ownership="full">
+          <type name="CheckButton" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_check_button_new_with_label">
+        <return-value transfer-ownership="full">
+          <type name="CheckButton" 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="mnemonic character
+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.">
+        <return-value transfer-ownership="full">
+          <type name="CheckButton" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="CheckMenuItem"
+           c:type="GtkCheckMenuItem"
+           parent="MenuItem"
+           glib:type-name="GtkCheckMenuItem"
+           glib:get-type="gtk_check_menu_item_get_type"
+           glib:type-struct="CheckMenuItemClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_check_menu_item_new">
+        <return-value transfer-ownership="full">
+          <type name="CheckMenuItem" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_check_menu_item_new_with_label">
+        <return-value transfer-ownership="full">
+          <type name="CheckMenuItem" 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="mnemonic character
+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.">
+        <return-value transfer-ownership="full">
+          <type name="CheckMenuItem" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <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="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="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_active"
+              c:identifier="gtk_check_menu_item_get_active"
+              doc="Returns whether the check menu item is active. See
+gtk_check_menu_item_set_active ().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </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>
+      <method name="set_inconsistent"
+              c:identifier="gtk_check_menu_item_set_inconsistent"
+              doc="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 &quot;in between&quot; state. This function turns on
+&quot;in between&quot; 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&apos;t affect the semantics of the widget.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_inconsistent"
+              c:identifier="gtk_check_menu_item_get_inconsistent"
+              doc="Retrieves the value set by gtk_check_menu_item_set_inconsistent().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_draw_as_radio"
+              c:identifier="gtk_check_menu_item_set_draw_as_radio"
+              doc="Sets whether @check_menu_item is drawn like a #GtkRadioMenuItem"
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="draw_as_radio" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_draw_as_radio"
+              c:identifier="gtk_check_menu_item_get_draw_as_radio"
+              doc="Returns whether @check_menu_item looks like a #GtkRadioMenuItem"
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_show_toggle"
+              c:identifier="gtk_check_menu_item_set_show_toggle">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="always" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="active" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="draw-as-radio" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="inconsistent" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="menu_item">
+        <type name="MenuItem" c:type="GtkMenuItem"/>
+      </field>
+      <field name="active" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="always_show_toggle" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="inconsistent" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="draw_as_radio" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="toggled">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="Clipboard"
+           c:type="GtkClipboard"
+           parent="GObject.Object"
+           glib:type-name="GtkClipboard"
+           glib:get-type="gtk_clipboard_get_type">
+      <function name="get_for_display"
+                c:identifier="gtk_clipboard_get_for_display"
+                doc="to use.
+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
+(&quot;CLIPBOARD&quot;, FALSE)&lt;/literal&gt;. See &lt;ulink
+url=&quot;http://www.freedesktop.org/Standards/clipboards-spec&quot;&gt;
+http://www.freedesktop.org/Standards/clipboards-spec&lt;/ulink&gt;
+for a detailed discussion of the &quot;CLIPBOARD&quot; vs. &quot;PRIMARY&quot;
+selections under the X window system. On Win32 the
+#GDK_SELECTION_PRIMARY clipboard is essentially ignored.)
+It&apos;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 &quot;Foo&quot; has a special-purpose
+clipboard, you might call it &quot;_FOO_SPECIAL_CLIPBOARD&quot;.
+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."
+                version="2.2">
+        <return-value transfer-ownership="none"
+                      doc="the appropriate clipboard object. If no">
+          <type name="Clipboard" c:type="GtkClipboard*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <type name="Gdk.Display" c:type="GdkDisplay*"/>
+          </parameter>
+          <parameter name="selection" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get"
+                c:identifier="gtk_clipboard_get"
+                doc="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.">
+        <return-value transfer-ownership="none"
+                      doc="the appropriate clipboard object. If no clipboard">
+          <type name="Clipboard" c:type="GtkClipboard*"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_display"
+              c:identifier="gtk_clipboard_get_display"
+              doc="Gets the #GdkDisplay associated with @clipboard"
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </method>
+      <method name="set_with_data"
+              c:identifier="gtk_clipboard_set_with_data"
+              doc="clipboard data
+be called, and @get_func will not be subsequently called.
+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 clipboard data failed the provided callback functions
+will be ignored.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+          </parameter>
+          <parameter name="n_targets" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="get_func" transfer-ownership="none" scope="call">
+            <type name="ClipboardGetFunc" c:type="GtkClipboardGetFunc"/>
+          </parameter>
+          <parameter name="clear_func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="5">
+            <type name="ClipboardClearFunc" c:type="GtkClipboardClearFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_with_owner"
+              c:identifier="gtk_clipboard_set_with_owner"
+              doc="clipboard data
+be called, and @get_func will not be subsequently called.
+to the callbacks when called.
+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.
+the clipboard data failed the provided callback functions
+will be ignored.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+          </parameter>
+          <parameter name="n_targets" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="get_func" transfer-ownership="none" scope="call">
+            <type name="ClipboardGetFunc" c:type="GtkClipboardGetFunc"/>
+          </parameter>
+          <parameter name="clear_func" transfer-ownership="none" scope="call">
+            <type name="ClipboardClearFunc" c:type="GtkClipboardClearFunc"/>
+          </parameter>
+          <parameter name="owner" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_owner"
+              c:identifier="gtk_clipboard_get_owner"
+              doc="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().">
+        <return-value transfer-ownership="full">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </return-value>
+      </method>
+      <method name="clear"
+              c:identifier="gtk_clipboard_clear"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_text"
+              c:identifier="gtk_clipboard_set_text"
+              doc="the length will be determined with &lt;function&gt;strlen()&lt;/function&gt;.
+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.">
+        <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="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_image"
+              c:identifier="gtk_clipboard_set_image"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="request_contents"
+              c:identifier="gtk_clipboard_request_contents"
+              doc="owner should convert the selection.
+(or the retrieval fails). If the retrieval fails
+the length field of @selection_data will be
+negative.
+Requests the contents of clipboard as the given target.
+When the results of the result are later received the supplied callback
+will be called.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="3">
+            <type name="ClipboardReceivedFunc"
+                  c:type="GtkClipboardReceivedFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="request_text"
+              c:identifier="gtk_clipboard_request_text"
+              doc="or the retrieval fails. (It will always be called
+one way or the other.)
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="ClipboardTextReceivedFunc"
+                  c:type="GtkClipboardTextReceivedFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="request_rich_text"
+              c:identifier="gtk_clipboard_request_rich_text"
+              doc="or the retrieval fails. (It will always be called
+one way or the other.)
+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&apos;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."
+              version="2.10">
+        <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="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="3">
+            <type name="ClipboardRichTextReceivedFunc"
+                  c:type="GtkClipboardRichTextReceivedFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="request_image"
+              c:identifier="gtk_clipboard_request_image"
+              doc="or the retrieval fails. (It will always be called
+one way or the other.)
+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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="ClipboardImageReceivedFunc"
+                  c:type="GtkClipboardImageReceivedFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="request_uris"
+              c:identifier="gtk_clipboard_request_uris"
+              doc="or the retrieval fails. (It will always be called
+one way or the other.)
+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."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="ClipboardURIReceivedFunc"
+                  c:type="GtkClipboardURIReceivedFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="request_targets"
+              c:identifier="gtk_clipboard_request_targets"
+              doc="or the retrieval fails. (It will always be called
+one way or the other.)
+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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="ClipboardTargetsReceivedFunc"
+                  c:type="GtkClipboardTargetsReceivedFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait_for_contents"
+              c:identifier="gtk_clipboard_wait_for_contents"
+              doc="owner should convert the selection.
+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.">
+        <return-value transfer-ownership="full">
+          <type name="SelectionData" c:type="GtkSelectionData*"/>
+        </return-value>
+        <parameters>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait_for_text"
+              c:identifier="gtk_clipboard_wait_for_text"
+              doc="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.)">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="wait_for_rich_text"
+              c:identifier="gtk_clipboard_wait_for_rich_text"
+              doc="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.)"
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom*"/>
+          </parameter>
+          <parameter name="length" direction="out" transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait_for_image"
+              c:identifier="gtk_clipboard_wait_for_image"
+              doc="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.
+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.)"
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="wait_for_uris"
+              c:identifier="gtk_clipboard_wait_for_uris"
+              doc="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.)"
+              version="2.14">
+        <return-value transfer-ownership="full" doc="a newly-allocated">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="wait_for_targets"
+              c:identifier="gtk_clipboard_wait_for_targets">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom**"/>
+          </parameter>
+          <parameter name="n_targets"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait_is_text_available"
+              c:identifier="gtk_clipboard_wait_is_text_available"
+              doc="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&apos;t need to retrieve
+the actual text.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="wait_is_rich_text_available"
+              c:identifier="gtk_clipboard_wait_is_rich_text_available"
+              doc="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&apos;t need to retrieve
+the actual text."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wait_is_image_available"
+              c:identifier="gtk_clipboard_wait_is_image_available"
+              doc="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&apos;t need to retrieve
+the actual image data."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="wait_is_uris_available"
+              c:identifier="gtk_clipboard_wait_is_uris_available"
+              doc="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&apos;t need to retrieve
+the actual URI data."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="wait_is_target_available"
+              c:identifier="gtk_clipboard_wait_is_target_available"
+              doc="Checks if a clipboard supports pasting data of a given type. This
+function can be used to determine if a &quot;Paste&quot; menu item should be
+insensitive or not.
+If you want to see if there&apos;s text available on the clipboard, use
+gtk_clipboard_wait_is_text_available () instead."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_can_store"
+              c:identifier="gtk_clipboard_set_can_store"
+              doc="or %NULL to indicate that all forms should be stored.
+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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+          </parameter>
+          <parameter name="n_targets" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="store"
+              c:identifier="gtk_clipboard_store"
+              doc="Stores the current clipboard data somewhere so that it will stay
+around after the application has quit."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <glib:signal name="owner-change"
+                   doc="The ::owner-change signal is emitted when GTK+ receives an
+event that indicates that the ownership of the selection
+associated with @clipboard has changed."
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </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="any" 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="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="user_data_or_owner" transfer-ownership="none">
+          <type name="any" 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="any" 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="any" 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">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" 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="int" c:type="gint"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" 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="any" 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">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="ColorButton"
+           c:type="GtkColorButton"
+           parent="Button"
+           glib:type-name="GtkColorButton"
+           glib:get-type="gtk_color_button_get_type"
+           glib:type-struct="ColorButtonClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_color_button_new"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ColorButton" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_color"
+                   c:identifier="gtk_color_button_new_with_color"
+                   doc="Creates a new color button."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ColorButton" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_color"
+              c:identifier="gtk_color_button_set_color"
+              doc="Sets the current color to be @color."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alpha"
+              c:identifier="gtk_color_button_set_alpha"
+              doc="Sets the current opacity to be @alpha."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="uint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_color"
+              c:identifier="gtk_color_button_get_color"
+              doc="Sets @color to be the current color in the #GtkColorButton widget."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_alpha"
+              c:identifier="gtk_color_button_get_alpha"
+              doc="Returns the current alpha value."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="set_use_alpha"
+              c:identifier="gtk_color_button_set_use_alpha"
+              doc="Sets whether or not the color button should use the alpha channel."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_alpha" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_alpha"
+              c:identifier="gtk_color_button_get_use_alpha"
+              doc="Does the color selection dialog use the alpha channel?"
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_title"
+              c:identifier="gtk_color_button_set_title"
+              doc="Sets the title for the color selection dialog."
+              version="2.4">
+        <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="get_title"
+              c:identifier="gtk_color_button_get_title"
+              doc="Gets the title of the color selection dialog."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <property name="alpha"
+                version="2.4"
+                writable="1"
+                doc="The selected opacity value (0 fully transparent, 65535 fully opaque).">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="color"
+                version="2.4"
+                writable="1"
+                doc="The selected color.">
+        <type name="Gdk.Color" c:type="GdkColor"/>
+      </property>
+      <property name="title"
+                version="2.4"
+                writable="1"
+                doc="The title of the color selection dialog">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="use-alpha"
+                version="2.4"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="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"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ColorButtonPrivate" c:type="GtkColorButtonPrivate">
+    </record>
+    <class name="ColorSelection"
+           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"/>
+      <constructor name="new"
+                   c:identifier="gtk_color_selection_new"
+                   doc="Creates a new GtkColorSelection.">
+        <return-value transfer-ownership="full">
+          <type name="ColorSelection" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <function name="palette_from_string"
+                c:identifier="gtk_color_selection_palette_from_string"
+                doc="Parses a color palette string; the string is a colon-separated
+list of color names readable by gdk_color_parse().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="colors" transfer-ownership="none">
+            <type name="Gdk.Color" c:type="GdkColor**"/>
+          </parameter>
+          <parameter name="n_colors" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="palette_to_string"
+                c:identifier="gtk_color_selection_palette_to_string"
+                doc="Encodes a palette as a string, useful for persistent storage.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </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="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="set_change_palette_hook"
+                c:identifier="gtk_color_selection_set_change_palette_hook"
+                doc="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
+&quot;gtk-color-palette&quot; so all GtkColorSelection widgets will be modified.
+Use gtk_color_selection_set_change_palette_with_screen_hook() instead."
+                deprecated="This function does not work in multihead environments."
+                deprecated-version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ColorSelectionChangePaletteFunc"
+                c:type="GtkColorSelectionChangePaletteFunc"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" scope="call">
+            <type name="ColorSelectionChangePaletteFunc"
+                  c:type="GtkColorSelectionChangePaletteFunc"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="set_change_palette_with_screen_hook"
+                c:identifier="gtk_color_selection_set_change_palette_with_screen_hook"
+                doc="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
+&quot;gtk-color-palette&quot; so all GtkColorSelection widgets will be modified."
+                version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="ColorSelectionChangePaletteWithScreenFunc"
+                c:type="GtkColorSelectionChangePaletteWithScreenFunc"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none" scope="call">
+            <type name="ColorSelectionChangePaletteWithScreenFunc"
+                  c:type="GtkColorSelectionChangePaletteWithScreenFunc"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_has_opacity_control"
+              c:identifier="gtk_color_selection_get_has_opacity_control"
+              doc="Determines whether the colorsel has an opacity control.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_has_opacity_control"
+              c:identifier="gtk_color_selection_set_has_opacity_control"
+              doc="Sets the @colorsel to use or not use opacity.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="has_opacity" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_has_palette"
+              c:identifier="gtk_color_selection_get_has_palette"
+              doc="Determines whether the color selector has a color palette.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_has_palette"
+              c:identifier="gtk_color_selection_set_has_palette"
+              doc="Shows and hides the palette based upon the value of @has_palette.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="has_palette" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_current_color"
+              c:identifier="gtk_color_selection_set_current_color"
+              doc="Sets the current color to be @color.  The first time this is called, it will
+also set the original color to be @color too.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_current_alpha"
+              c:identifier="gtk_color_selection_set_current_alpha"
+              doc="Sets the current opacity to be @alpha.  The first time this is called, it will
+also set the original opacity to be @alpha too.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="uint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_current_color"
+              c:identifier="gtk_color_selection_get_current_color"
+              doc="Sets @color to be the current color in the GtkColorSelection widget.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_current_alpha"
+              c:identifier="gtk_color_selection_get_current_alpha"
+              doc="Returns the current alpha value.">
+        <return-value transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="set_previous_color"
+              c:identifier="gtk_color_selection_set_previous_color"
+              doc="Sets the &apos;previous&apos; 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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_previous_alpha"
+              c:identifier="gtk_color_selection_set_previous_alpha"
+              doc="Sets the &apos;previous&apos; alpha to be @alpha.  This function should be called with
+some hesitations, as it might seem confusing to have that alpha change.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alpha" transfer-ownership="none">
+            <type name="uint16" c:type="guint16"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_previous_color"
+              c:identifier="gtk_color_selection_get_previous_color"
+              doc="Fills @color in with the original color value.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_previous_alpha"
+              c:identifier="gtk_color_selection_get_previous_alpha"
+              doc="Returns the previous alpha value.">
+        <return-value transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="is_adjusting"
+              c:identifier="gtk_color_selection_is_adjusting"
+              doc="Gets the current state of the @colorsel.
+if the selection has stopped.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_color"
+              c:identifier="gtk_color_selection_set_color"
+              doc="to set the current color to.
+Sets the current color to be @color.  The first time this is called, it will
+also set the original color to be @color too."
+              deprecated="Use gtk_color_selection_set_current_color() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_color"
+              c:identifier="gtk_color_selection_get_color"
+              doc="Sets @color to be the current color in the GtkColorSelection widget."
+              deprecated="Use gtk_color_selection_get_current_color() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="color" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_update_policy"
+              c:identifier="gtk_color_selection_set_update_policy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="policy" transfer-ownership="none">
+            <type name="UpdateType" c:type="GtkUpdateType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="current-alpha" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="current-color" writable="1">
+        <type name="Gdk.Color" c:type="GdkColor"/>
+      </property>
+      <property name="has-opacity-control" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="has-palette" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="VBox" c:type="GtkVBox"/>
+      </field>
+      <field name="private_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <glib:signal name="color-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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="int" 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="int" 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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="ColorSelectionDialog"
+           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"/>
+      <constructor name="new" c:identifier="gtk_color_selection_dialog_new">
+        <return-value transfer-ownership="full">
+          <type name="ColorSelectionDialog" 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"
+              doc="Retrieves the #GtkColorSelection widget embedded in the dialog."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <property name="cancel-button">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <property name="color-selection">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <property name="help-button">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <property name="ok-button">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Dialog" c:type="GtkDialog"/>
+      </field>
+      <field name="colorsel">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="ok_button">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="cancel_button">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="help_button">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="Combo"
+           c:type="GtkCombo"
+           parent="HBox"
+           glib:type-name="GtkCombo"
+           glib:get-type="gtk_combo_get_type"
+           glib:type-struct="ComboClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <constructor name="new" c:identifier="gtk_combo_new">
+        <return-value transfer-ownership="full">
+          <type name="Combo" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="set_value_in_list"
+              c:identifier="gtk_combo_set_value_in_list">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="ok_if_empty" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_arrows" c:identifier="gtk_combo_set_use_arrows">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_arrows_always"
+              c:identifier="gtk_combo_set_use_arrows_always">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_case_sensitive"
+              c:identifier="gtk_combo_set_case_sensitive">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_item_string" c:identifier="gtk_combo_set_item_string">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <type name="Item" c:type="GtkItem*"/>
+          </parameter>
+          <parameter name="item_value" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_popdown_strings"
+              c:identifier="gtk_combo_set_popdown_strings">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="strings" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="disable_activate"
+              c:identifier="gtk_combo_disable_activate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="allow-empty" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="case-sensitive" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="enable-arrow-keys" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="enable-arrows-always" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="value-in-list" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="hbox">
+        <type name="HBox" c:type="GtkHBox"/>
+      </field>
+      <field name="entry">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="button">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="popup">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="popwin">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="list">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="entry_change_id">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="list_change_id">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="value_in_list" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="ok_if_empty" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="case_sensitive" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="use_arrows" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="use_arrows_always" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="current_button">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="activate_id">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </class>
+    <class name="ComboBox"
+           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"/>
+      <constructor name="new"
+                   c:identifier="gtk_combo_box_new"
+                   doc="Creates a new empty #GtkComboBox."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ComboBox" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_model"
+                   c:identifier="gtk_combo_box_new_with_model"
+                   doc="Creates a new #GtkComboBox with the model initialized to @model."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ComboBox" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none">
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_text"
+                   c:identifier="gtk_combo_box_new_text"
+                   doc="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()."
+                   version="2.4">
+        <return-value transfer-ownership="none" doc="A new text combo box.">
+          <type name="ComboBox" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="get_active_text" invoker="get_active_text">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_wrap_width"
+              c:identifier="gtk_combo_box_get_wrap_width"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_wrap_width"
+              c:identifier="gtk_combo_box_set_wrap_width"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_span_column"
+              c:identifier="gtk_combo_box_get_row_span_column"
+              doc="Returns the column with row span information for @combo_box."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_row_span_column"
+              c:identifier="gtk_combo_box_set_row_span_column"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row_span" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_span_column"
+              c:identifier="gtk_combo_box_get_column_span_column"
+              doc="Returns the column with column span information for @combo_box."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_column_span_column"
+              c:identifier="gtk_combo_box_set_column_span_column"
+              doc="Sets the column with column span information for @combo_box to be
+how many columns an item should span."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column_span" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_add_tearoffs"
+              c:identifier="gtk_combo_box_get_add_tearoffs"
+              doc="Gets the current value of the :add-tearoffs property.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_add_tearoffs"
+              c:identifier="gtk_combo_box_set_add_tearoffs"
+              doc="Sets whether the popup menu should have a tearoff
+menu item."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="add_tearoffs" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_title"
+              c:identifier="gtk_combo_box_get_title"
+              doc="Gets the current title of the menu in tearoff mode. See
+gtk_combo_box_set_add_tearoffs().
+string which must not be freed."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_title"
+              c:identifier="gtk_combo_box_set_title"
+              doc="Sets the menu&apos;s title in tearoff mode."
+              version="2.10">
+        <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="get_focus_on_click"
+              c:identifier="gtk_combo_box_get_focus_on_click"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_focus_on_click"
+              c:identifier="gtk_combo_box_set_focus_on_click"
+              doc="with the mouse
+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&apos;t want the keyboard focus removed from
+the main area of the application."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="focus_on_click" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_active"
+              c:identifier="gtk_combo_box_get_active"
+              doc="Returns the index of the currently active item, or -1 if there&apos;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&apos;s no active item."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_active"
+              c:identifier="gtk_combo_box_set_active"
+              doc="no active item
+Sets the active item of @combo_box to be the item at @index."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_active_iter"
+              c:identifier="gtk_combo_box_get_active_iter"
+              doc="Sets @iter to point to the current active item, if it exists."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_active_iter"
+              c:identifier="gtk_combo_box_set_active_iter"
+              doc="Sets the current active item to be the one referenced by @iter, or
+unsets the active item if @iter is %NULL."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The #GtkTreeIter, or %NULL">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_model"
+              c:identifier="gtk_combo_box_set_model"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="model"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #GtkTreeModel">
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_model" c:identifier="gtk_combo_box_get_model">
+        <return-value transfer-ownership="full">
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </return-value>
+      </method>
+      <method name="get_row_separator_func"
+              c:identifier="gtk_combo_box_get_row_separator_func"
+              doc="Returns the current row separator function."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="TreeViewRowSeparatorFunc"
+                c:type="GtkTreeViewRowSeparatorFunc"/>
+        </return-value>
+      </method>
+      <method name="set_row_separator_func"
+              c:identifier="gtk_combo_box_set_row_separator_func"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="TreeViewRowSeparatorFunc"
+                  c:type="GtkTreeViewRowSeparatorFunc"/>
+          </parameter>
+          <parameter name="data"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="user data to pass to @func, or %NULL">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="call"
+                     doc="destroy notifier for @data, or %NULL">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_button_sensitivity"
+              c:identifier="gtk_combo_box_set_button_sensitivity"
+              doc="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)."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sensitivity" transfer-ownership="none">
+            <type name="SensitivityType" c:type="GtkSensitivityType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_button_sensitivity"
+              c:identifier="gtk_combo_box_get_button_sensitivity"
+              doc="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."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="SensitivityType" c:type="GtkSensitivityType"/>
+        </return-value>
+      </method>
+      <method name="append_text"
+              c:identifier="gtk_combo_box_append_text"
+              doc="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()."
+              version="2.4">
+        <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>
+        </parameters>
+      </method>
+      <method name="insert_text"
+              c:identifier="gtk_combo_box_insert_text"
+              doc="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()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend_text"
+              c:identifier="gtk_combo_box_prepend_text"
+              doc="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()."
+              version="2.4">
+        <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>
+        </parameters>
+      </method>
+      <method name="remove_text"
+              c:identifier="gtk_combo_box_remove_text"
+              doc="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()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_active_text"
+              c:identifier="gtk_combo_box_get_active_text"
+              doc="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()."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="popup"
+              c:identifier="gtk_combo_box_popup"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="popdown"
+              c:identifier="gtk_combo_box_popdown"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_popup_accessible"
+              c:identifier="gtk_combo_box_get_popup_accessible"
+              doc="Gets the accessible object corresponding to the combo box&apos;s popup.
+This function is mostly intended for use by accessibility technologies;
+applications should have little use for it."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="Atk.Object" c:type="AtkObject*"/>
+        </return-value>
+      </method>
+      <property name="active"
+                version="2.4"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="add-tearoffs"
+                version="2.6"
+                writable="1"
+                doc="The add-tearoffs property controls whether generated menus
+have tearoff menu items.
+Note that this only affects menu style combo boxes.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="button-sensitivity"
+                version="2.14"
+                writable="1"
+                doc="Whether the dropdown button is sensitive when
+the model is empty.">
+        <type name="SensitivityType" c:type="GtkSensitivityType"/>
+      </property>
+      <property name="column-span-column"
+                version="2.4"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="focus-on-click" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="has-frame"
+                version="2.6"
+                writable="1"
+                doc="The has-frame property controls whether a frame
+is drawn around the entry.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="model"
+                version="2.4"
+                writable="1"
+                doc="The model from which the combo box takes the values shown
+in the list.">
+        <type name="TreeModel" c:type="GtkTreeModel"/>
+      </property>
+      <property name="popup-shown"
+                version="2.10"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="row-span-column"
+                version="2.4"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="tearoff-title"
+                version="2.10"
+                writable="1"
+                doc="A title that may be displayed by the window manager
+when the popup is torn-off.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="wrap-width"
+                version="2.4"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="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"
+                   doc="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&apos;s list."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="move-active"
+                   doc="The ::move-active signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&gt;keybinding signal&lt;/link&gt;
+which gets emitted to move the active selection."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scroll_type" transfer-ownership="none">
+            <type name="ScrollType" c:type="GtkScrollType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="popdown"
+                   doc="The ::popdown signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="popup"
+                   doc="The ::popup signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&gt;keybinding signal&lt;/link&gt;
+which gets emitted to popup the combo box list.
+The default binding for this signal is Alt+Down."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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" c:type="get_active_text">
+          <return-value transfer-ownership="full">
+            <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">
+        <callback name="gtk_reserved0" c:type="_gtk_reserved0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="ComboBoxEntry"
+           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"/>
+      <constructor name="new"
+                   c:identifier="gtk_combo_box_entry_new"
+                   doc="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()."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ComboBoxEntry" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_model"
+                   c:identifier="gtk_combo_box_entry_new_with_model"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ComboBoxEntry" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none">
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+          <parameter name="text_column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_text"
+                   c:identifier="gtk_combo_box_entry_new_text"
+                   doc="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()."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ComboBoxEntry" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="set_text_column"
+              c:identifier="gtk_combo_box_entry_set_text_column"
+              doc="Sets the model column which @entry_box should use to get strings from
+to be @text_column."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text_column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text_column"
+              c:identifier="gtk_combo_box_entry_get_text_column"
+              doc="Returns the column which @entry_box is using to get the strings from."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <property name="text-column" writable="1">
+        <type name="int" c:type="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">
+        <callback name="gtk_reserved0" c:type="_gtk_reserved0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ComboBoxEntryPrivate" c:type="GtkComboBoxEntryPrivate">
+    </record>
+    <record name="ComboBoxPrivate" c:type="GtkComboBoxPrivate">
+    </record>
+    <record name="ComboClass"
+            c:type="GtkComboClass"
+            glib:is-gtype-struct-for="Combo">
+      <field name="parent_class">
+        <type name="HBoxClass" c:type="GtkHBoxClass"/>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="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"/>
+      <function name="class_find_child_property"
+                c:identifier="gtk_container_class_find_child_property"
+                doc="child property with that name.
+Finds a child property of a container class by name.">
+        <return-value transfer-ownership="full"
+                      doc="the #GParamSpec of the child property or %NULL if @class has no">
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="cclass" transfer-ownership="none">
+            <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
+          </parameter>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="class_list_child_properties"
+                c:identifier="gtk_container_class_list_child_properties"
+                doc="The array must be freed with g_free().
+Returns all child properties of a container class.">
+        <return-value transfer-ownership="full">
+          <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+        </return-value>
+        <parameters>
+          <parameter name="cclass" transfer-ownership="none">
+            <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
+          </parameter>
+          <parameter name="n_properties"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="forall">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="include_internals" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="callback" transfer-ownership="none">
+            <type name="Callback" c:type="GtkCallback"/>
+          </parameter>
+          <parameter name="callback_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="child_type" invoker="child_type">
+        <return-value transfer-ownership="none">
+          <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="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="uint" 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="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="uint" 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="set_border_width"
+              c:identifier="gtk_container_set_border_width"
+              doc="the container. Valid values are in the range 0-65535 pixels.
+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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="border_width" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_border_width"
+              c:identifier="gtk_container_get_border_width"
+              doc="Retrieves the border width of the container. See
+gtk_container_set_border_width().">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="add"
+              c:identifier="gtk_container_add"
+              doc="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&apos;t place the same widget inside two different containers.">
+        <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>
+      </method>
+      <method name="remove"
+              c:identifier="gtk_container_remove"
+              doc="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&apos;s not inside
+a container, using g_object_ref(). If you don&apos;t want to use @widget
+again it&apos;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.">
+        <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>
+      </method>
+      <method name="set_resize_mode"
+              c:identifier="gtk_container_set_resize_mode"
+              doc="Sets the resize mode for the container.
+The resize mode of a container determines whether a resize request
+will be passed to the container&apos;s parent, queued for later execution
+or executed immediately.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resize_mode" transfer-ownership="none">
+            <type name="ResizeMode" c:type="GtkResizeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_resize_mode"
+              c:identifier="gtk_container_get_resize_mode"
+              doc="Returns the resize mode for the container. See
+gtk_container_set_resize_mode ().">
+        <return-value transfer-ownership="full">
+          <type name="ResizeMode" c:type="GtkResizeMode"/>
+        </return-value>
+      </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="foreach"
+              c:identifier="gtk_container_foreach"
+              doc="Invokes @callback on each non-internal child of @container. See
+gtk_container_forall() for details on what constitutes an
+&quot;internal&quot; child.  Most applications should use
+gtk_container_foreach(), rather than gtk_container_forall().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="Callback" c:type="GtkCallback"/>
+          </parameter>
+          <parameter name="callback_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach_full" c:identifier="gtk_container_foreach_full">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback" transfer-ownership="none" scope="call">
+            <type name="Callback" c:type="GtkCallback"/>
+          </parameter>
+          <parameter name="marshal"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <type name="CallbackMarshal" c:type="GtkCallbackMarshal"/>
+          </parameter>
+          <parameter name="callback_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_children"
+              c:identifier="gtk_container_get_children"
+              doc="Returns the container&apos;s non-internal children. See
+gtk_container_forall() for details on what constitutes an &quot;internal&quot; child.">
+        <return-value transfer-ownership="container"
+                      doc="a newly-allocated list of the container&apos;s non-internal children.">
+          <type name="GLib.List" c:type="GList*">
+            <type name="Widget"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="propagate_expose"
+              c:identifier="gtk_container_propagate_expose"
+              doc="When a container receives an expose event, it must send synthetic
+expose events to all children that don&apos;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&apos;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.">
+        <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="event" transfer-ownership="none">
+            <type name="Gdk.EventExpose" c:type="GdkEventExpose*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_focus_chain"
+              c:identifier="gtk_container_set_focus_chain"
+              doc="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&apos;s allowed
+to set the focus chain before you pack the widgets, or have a widget
+in the chain that isn&apos;t always packed. The necessary checks are done
+when the focus chain is actually traversed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="focusable_widgets" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_focus_chain"
+              c:identifier="gtk_container_get_focus_chain"
+              doc="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.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="focusable_widgets"
+                     direction="out"
+                     transfer-ownership="container"
+                     doc="location">
+            <type name="GLib.List" c:type="GList**">
+              <type name="Widget"/>
+            </type>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_focus_chain"
+              c:identifier="gtk_container_unset_focus_chain"
+              doc="Removes a focus chain explicitly set with gtk_container_set_focus_chain().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_reallocate_redraws"
+              c:identifier="gtk_container_set_reallocate_redraws"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="needs_redraws" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_focus_child"
+              c:identifier="gtk_container_set_focus_child"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkWidget, or %NULL">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_focus_child"
+              c:identifier="gtk_container_get_focus_child"
+              doc="Returns the current focus child widget inside @container.
+inside @container, or %NULL if none is set."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_focus_vadjustment"
+              c:identifier="gtk_container_set_focus_vadjustment"
+              doc="is moved among the descendents of @container
+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.">
+        <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>
+      </method>
+      <method name="get_focus_vadjustment"
+              c:identifier="gtk_container_get_focus_vadjustment"
+              doc="Retrieves the vertical focus adjustment for the container. See
+gtk_container_set_focus_vadjustment().
+none has been set.">
+        <return-value transfer-ownership="none"
+                      doc="the vertical focus adjustment, or %NULL if">
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="set_focus_hadjustment"
+              c:identifier="gtk_container_set_focus_hadjustment"
+              doc="moved among the descendents of @container
+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.">
+        <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>
+      </method>
+      <method name="get_focus_hadjustment"
+              c:identifier="gtk_container_get_focus_hadjustment"
+              doc="Retrieves the horizontal focus adjustment for the container. See
+gtk_container_set_focus_hadjustment ().
+none has been set.">
+        <return-value transfer-ownership="none"
+                      doc="the horizontal focus adjustment, or %NULL if">
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </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="child_type"
+              c:identifier="gtk_container_child_type"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+      </method>
+      <method name="add_with_properties"
+              c:identifier="gtk_container_add_with_properties"
+              doc="with @first_prop_name
+Adds @widget to @container, setting child properties at the same time.
+See gtk_container_add() and gtk_container_child_set() for more details.">
+        <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="first_prop_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_set"
+              c:identifier="gtk_container_child_set"
+              doc="with @first_prop_name
+Sets one or more child properties for @child and @container.">
+        <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="first_prop_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_get"
+              c:identifier="gtk_container_child_get"
+              doc="optionally by more name/return location pairs, followed by %NULL
+Gets the values of one or more child properties for @child and @container.">
+        <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="first_prop_name" transfer-ownership="none">
+            <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="Sets a child property for @child and @container.">
+        <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_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>
+      </method>
+      <method name="child_get_property"
+              c:identifier="gtk_container_child_get_property"
+              doc="Gets the value of a child property for @child and @container.">
+        <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_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>
+      </method>
+      <method name="forall"
+              c:identifier="gtk_container_forall"
+              doc="Invokes @callback on each child of @container, including children
+that are considered &quot;internal&quot; (implementation details of the
+container). &quot;Internal&quot; children generally weren&apos;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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="Callback" c:type="GtkCallback"/>
+          </parameter>
+          <parameter name="callback_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="border-width" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="child" readable="0" writable="1">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <property name="resize-mode" writable="1">
+        <type name="ResizeMode" c:type="GtkResizeMode"/>
+      </property>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="focus_child">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="border_width" bits="16">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="need_resize" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="resize_mode" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="reallocate_redraws" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_focus_chain" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="add">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="check-resize">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="remove">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="set-focus-child">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget"/>
+          </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="add">
+        <callback name="add" c:type="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" c:type="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" c:type="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">
+        <callback name="forall" c:type="forall">
+          <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="boolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="callback" transfer-ownership="none">
+              <type name="Callback" c:type="GtkCallback"/>
+            </parameter>
+            <parameter name="callback_data" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_focus_child">
+        <callback name="set_focus_child" c:type="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" c:type="child_type">
+          <return-value transfer-ownership="none">
+            <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" c:type="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" c:type="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="uint" 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" c:type="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="uint" 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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <method name="install_child_property"
+              c:identifier="gtk_container_class_install_child_property"
+              doc="Installs a child property on a container class.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_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>
+      </method>
+    </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>
+    <class name="Curve"
+           c:type="GtkCurve"
+           parent="DrawingArea"
+           glib:type-name="GtkCurve"
+           glib:get-type="gtk_curve_get_type"
+           glib:type-struct="CurveClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_curve_new">
+        <return-value transfer-ownership="full">
+          <type name="Curve" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="reset" c:identifier="gtk_curve_reset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_gamma" c:identifier="gtk_curve_set_gamma">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gamma_" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_range" c:identifier="gtk_curve_set_range">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="max_x" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="min_y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="max_y" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_vector" c:identifier="gtk_curve_get_vector">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="veclen" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="vector" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_vector" c:identifier="gtk_curve_set_vector">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="veclen" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="vector" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_curve_type" c:identifier="gtk_curve_set_curve_type">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="CurveType" c:type="GtkCurveType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="curve-type" writable="1">
+        <type name="CurveType" c:type="GtkCurveType"/>
+      </property>
+      <property name="max-x" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="max-y" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="min-x" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="min-y" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <field name="graph">
+        <type name="DrawingArea" c:type="GtkDrawingArea"/>
+      </field>
+      <field name="cursor_type">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="min_x">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="max_x">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="min_y">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="max_y">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="pixmap">
+        <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+      </field>
+      <field name="curve_type">
+        <type name="CurveType" c:type="GtkCurveType"/>
+      </field>
+      <field name="height">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="grab_point">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="last">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="num_points">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="point">
+        <type name="Gdk.Point" c:type="GdkPoint*"/>
+      </field>
+      <field name="num_ctlpoints">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="ctlpoint">
+        <type name="any" c:type="gfloat*"/>
+      </field>
+      <glib:signal name="curve-type-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="CurveClass"
+            c:type="GtkCurveClass"
+            glib:is-gtype-struct-for="Curve">
+      <field name="parent_class">
+        <type name="DrawingAreaClass" c:type="GtkDrawingAreaClass"/>
+      </field>
+      <field name="curve_type_changed">
+        <callback name="curve_type_changed" c:type="curve_type_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="curve" transfer-ownership="none">
+              <type name="Curve" c:type="GtkCurve*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="CurveType"
+                 glib:type-name="GtkCurveType"
+                 glib:get-type="gtk_curve_type_get_type"
+                 c:type="GtkCurveType">
+      <member name="linear"
+              value="0"
+              c:identifier="GTK_CURVE_TYPE_LINEAR"
+              glib:nick="linear"/>
+      <member name="spline"
+              value="1"
+              c:identifier="GTK_CURVE_TYPE_SPLINE"
+              glib:nick="spline"/>
+      <member name="free"
+              value="2"
+              c:identifier="GTK_CURVE_TYPE_FREE"
+              glib:nick="free"/>
+    </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"/>
+    </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>
+    <callback name="DestroyNotify" c:type="GtkDestroyNotify">
+      <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="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="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"/>
+      <constructor name="new" c:identifier="gtk_dialog_new">
+        <return-value transfer-ownership="full">
+          <type name="Dialog" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_buttons"
+                   c:identifier="gtk_dialog_new_with_buttons"
+                   doc="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&apos;s a simple example:
+|[
+GtkWidget *dialog = gtk_dialog_new_with_buttons (&quot;My dialog&quot;,
+main_app_window,
+GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+GTK_STOCK_OK,
+GTK_RESPONSE_ACCEPT,
+GTK_STOCK_CANCEL,
+GTK_RESPONSE_REJECT,
+NULL);
+]|">
+        <return-value transfer-ownership="full">
+          <type name="Dialog" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="title"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Title of the dialog, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Transient parent of the dialog, or %NULL">
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="DialogFlags" c:type="GtkDialogFlags"/>
+          </parameter>
+          <parameter name="first_button_text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="stock ID or text to go in first button, or %NULL">
+            <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="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&apos;s action area. If you want to add a
+non-activatable widget, simply pack it into the @action_area field
+of the #GtkDialog struct.">
+        <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="response_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_button"
+              c:identifier="gtk_dialog_add_button"
+              doc="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&apos;s action area. The button widget is
+returned, but usually you don&apos;t need it.">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="button_text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="response_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_buttons"
+              c:identifier="gtk_dialog_add_buttons"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_button_text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_response_sensitive"
+              c:identifier="gtk_dialog_set_response_sensitive"
+              doc="Calls &lt;literal&gt;gtk_widget_set_sensitive (widget, @setting)&lt;/literal&gt;
+for each widget in the dialog&apos;s action area with the given @response_id.
+A convenient way to sensitize/desensitize dialog buttons.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="response_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_default_response"
+              c:identifier="gtk_dialog_set_default_response"
+              doc="Sets the last widget in the dialog&apos;s action area with the given @response_id
+as the default widget for the dialog. Pressing &quot;Enter&quot; normally activates
+the default widget.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="response_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_widget_for_response"
+              c:identifier="gtk_dialog_get_widget_for_response"
+              doc="Gets the widget button that uses the given response ID in the action area
+of a dialog."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="response_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_response_for_widget"
+              c:identifier="gtk_dialog_get_response_for_widget"
+              doc="Gets the response id of a widget in the action area
+of a dialog.
+if @widget doesn&apos;t have a response id set."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_has_separator"
+              c:identifier="gtk_dialog_set_has_separator"
+              doc="Sets whether the dialog has a separator above the buttons.
+%TRUE by default.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_has_separator"
+              c:identifier="gtk_dialog_get_has_separator"
+              doc="Accessor for whether the dialog has a separator.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_alternative_button_order"
+              c:identifier="gtk_dialog_set_alternative_button_order"
+              doc="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=&quot;http://developer.gnome.org/projects/gup/hig/2.0/&quot;&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);
+]|"
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_response_id" transfer-ownership="none">
+            <type name="int" 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"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_params" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="new_order"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="response"
+              c:identifier="gtk_dialog_response"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="response_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="run"
+              c:identifier="gtk_dialog_run"
+              doc="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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_action_area"
+              c:identifier="gtk_dialog_get_action_area"
+              doc="Returns the action area of @dialog."
+              version="2.14">
+        <return-value transfer-ownership="none" doc="the action area.">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_content_area"
+              c:identifier="gtk_dialog_get_content_area"
+              doc="Returns the content area of @dialog."
+              version="2.14">
+        <return-value transfer-ownership="none"
+                      doc="the content area #GtkVBox.">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <property name="has-separator"
+                writable="1"
+                doc="When %TRUE, the dialog has a separator bar above its buttons.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="window">
+        <type name="Window" c:type="GtkWindow"/>
+      </field>
+      <field name="vbox">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="action_area">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="separator">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <glib:signal name="close"
+                   doc="The ::close signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="response"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="response_id" transfer-ownership="none">
+            <type name="int" c:type="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" c:type="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="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close">
+        <callback name="close" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_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"/>
+      <member name="no_separator"
+              value="4"
+              c:identifier="GTK_DIALOG_NO_SEPARATOR"
+              glib:nick="no-separator"/>
+    </bitfield>
+    <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>
+    <union name="DitherInfo" c:type="GtkDitherInfo">
+      <field name="s" writable="1">
+        <array zero-terminated="0" c:type="gushort" fixed-size="2">
+          <type name="ushort"/>
+        </array>
+      </field>
+      <field name="c" writable="1">
+        <array zero-terminated="0" c:type="guchar" fixed-size="4">
+          <type name="uint8"/>
+        </array>
+      </field>
+    </union>
+    <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: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"/>
+      <constructor name="new" c:identifier="gtk_drawing_area_new">
+        <return-value transfer-ownership="full">
+          <type name="DrawingArea" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="size" c:identifier="gtk_drawing_area_size">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="draw_data">
+        <type name="any" 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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <interface name="Editable"
+               c:type="GtkEditable"
+               glib:type-name="GtkEditable"
+               glib:get-type="gtk_editable_get_type"
+               glib:type-struct="EditableClass">
+      <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="int" c:type="gint"/>
+          </parameter>
+          <parameter name="position" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <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="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_chars" invoker="get_chars">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="int" 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="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_selection_bounds"
+                      invoker="get_selection_bounds">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_pos" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_position" invoker="set_position">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_position" invoker="get_position">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <method name="select_region"
+              c:identifier="gtk_editable_select_region"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selection_bounds"
+              c:identifier="gtk_editable_get_selection_bounds"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the starting position, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="end_pos"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the end position, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_text"
+              c:identifier="gtk_editable_insert_text"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="new_text_length" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="position"
+                     direction="inout"
+                     transfer-ownership="full"
+                     doc="location of the position text will be inserted at">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_text"
+              c:identifier="gtk_editable_delete_text"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_chars"
+              c:identifier="gtk_editable_get_chars"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="cut_clipboard"
+              c:identifier="gtk_editable_cut_clipboard"
+              doc="Removes the contents of the currently selected content in the editable and
+puts it on the clipboard.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="copy_clipboard"
+              c:identifier="gtk_editable_copy_clipboard"
+              doc="Copies the contents of the currently selected content in the editable and
+puts it on the clipboard.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="paste_clipboard"
+              c:identifier="gtk_editable_paste_clipboard"
+              doc="Pastes the content of the clipboard to the current position of the
+cursor in the editable.">
+        <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="Deletes the currently selected text of the editable.
+This call doesn&apos;t do anything if there is no selected text.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_position"
+              c:identifier="gtk_editable_set_position"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_position"
+              c:identifier="gtk_editable_get_position"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_editable"
+              c:identifier="gtk_editable_set_editable"
+              doc="in the widget
+Determines if the user can edit the text in the editable
+widget or not.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_editable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_editable"
+              c:identifier="gtk_editable_get_editable"
+              doc="Retrieves whether @editable is editable. See
+gtk_editable_set_editable().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <glib:signal name="changed"
+                   doc="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).">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="delete-text"
+                   doc="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().">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="insert-text"
+                   doc="or -1 if new_text is nul-terminated
+the new text. this is an in-out parameter.
+After the signal emission is finished, it should
+point after the newly inserted text.
+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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_text" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="new_text_length" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <record name="EditableClass"
+            c:type="GtkEditableClass"
+            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" c:type="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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="position"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_text">
+        <callback name="delete_text" c:type="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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="end_pos" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="changed">
+        <callback name="changed" c:type="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" c:type="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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="position"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="do_delete_text">
+        <callback name="do_delete_text" c:type="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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="end_pos" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_chars">
+        <callback name="get_chars" c:type="get_chars">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="end_pos" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_selection_bounds">
+        <callback name="set_selection_bounds" c:type="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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="end_pos" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_selection_bounds">
+        <callback name="get_selection_bounds" c:type="get_selection_bounds">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="end_pos"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_position">
+        <callback name="set_position" c:type="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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_position">
+        <callback name="get_position" c:type="get_position">
+          <return-value transfer-ownership="none">
+            <type name="int" 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: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"/>
+      <constructor name="new"
+                   c:identifier="gtk_entry_new"
+                   doc="Creates a new entry.">
+        <return-value transfer-ownership="full">
+          <type name="Entry" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_buffer"
+                   c:identifier="gtk_entry_new_with_buffer"
+                   doc="Creates a new entry with the specified text buffer."
+                   version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="Entry" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="EntryBuffer" c:type="GtkEntryBuffer*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_max_length"
+                   c:identifier="gtk_entry_new_with_max_length"
+                   doc="(other than the maximum length of entries.) The value passed in will
+be clamped to the range 0-65536.
+Creates a new #GtkEntry widget with the given maximum length."
+                   deprecated="Use gtk_entry_set_max_length() instead."
+                   deprecated-version="2.0">
+        <return-value transfer-ownership="full">
+          <type name="Entry" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="max" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </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" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </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>
+      </virtual-method>
+      <method name="get_buffer"
+              c:identifier="gtk_entry_get_buffer"
+              doc="Get the #GtkEntryBuffer object which holds the text for
+this widget."
+              version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="EntryBuffer" c:type="GtkEntryBuffer*"/>
+        </return-value>
+      </method>
+      <method name="set_buffer"
+              c:identifier="gtk_entry_set_buffer"
+              doc="Set the #GtkEntryBuffer object which holds the text for
+this widget."
+              version="2.18">
+        <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>
+        </parameters>
+      </method>
+      <method name="get_text_window"
+              c:identifier="gtk_entry_get_text_window"
+              doc="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&apos;s icon windows.
+See also gtk_entry_get_icon_window()."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="set_visibility"
+              c:identifier="gtk_entry_set_visibility"
+              doc="as plaintext
+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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visibility"
+              c:identifier="gtk_entry_get_visibility"
+              doc="Retrieves whether the text in @entry is visible. See
+gtk_entry_set_visibility().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_invisible_char"
+              c:identifier="gtk_entry_set_invisible_char"
+              doc="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 &quot;password mode&quot; 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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ch" transfer-ownership="none">
+            <type name="GLib.unichar" c:type="gunichar"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_invisible_char"
+              c:identifier="gtk_entry_get_invisible_char"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.unichar" c:type="gunichar"/>
+        </return-value>
+      </method>
+      <method name="unset_invisible_char"
+              c:identifier="gtk_entry_unset_invisible_char"
+              doc="Unsets the invisible char previously set with
+gtk_entry_set_invisible_char(). So that the
+default invisible char is used again."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_has_frame"
+              c:identifier="gtk_entry_set_has_frame"
+              doc="Sets whether the entry has a beveled frame around it.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_has_frame"
+              c:identifier="gtk_entry_get_has_frame"
+              doc="Gets the value set by gtk_entry_set_has_frame().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_inner_border"
+              c:identifier="gtk_entry_set_inner_border"
+              doc="Sets %entry&apos;s inner-border property to %border, or clears it if %NULL
+is passed. The inner-border is the area around the entry&apos;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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="border"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkBorder, or %NULL">
+            <type name="Border" c:type="GtkBorder*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_inner_border"
+              c:identifier="gtk_entry_get_inner_border"
+              doc="This function returns the entry&apos;s #GtkEntry:inner-border property. See
+gtk_entry_set_inner_border() for more information."
+              version="2.10">
+        <return-value transfer-ownership="none"
+                      doc="the entry&apos;s #GtkBorder, or %NULL if none was set.">
+          <type name="Border" c:type="GtkBorder*"/>
+        </return-value>
+      </method>
+      <method name="set_overwrite_mode"
+              c:identifier="gtk_entry_set_overwrite_mode"
+              doc="Sets whether the text is overwritten when typing in the #GtkEntry."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="overwrite" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_overwrite_mode"
+              c:identifier="gtk_entry_get_overwrite_mode"
+              doc="Gets the value set by gtk_entry_set_overwrite_mode()."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_max_length"
+              c:identifier="gtk_entry_set_max_length"
+              doc="(other than the maximum length of entries.) The value passed in will
+be clamped to the range 0-65536.
+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;">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_max_length"
+              c:identifier="gtk_entry_get_max_length"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_text_length"
+              c:identifier="gtk_entry_get_text_length"
+              doc="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."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </return-value>
+      </method>
+      <method name="set_activates_default"
+              c:identifier="gtk_entry_set_activates_default"
+              doc="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.
+gtk_window_activate_default() on the window containing the entry, in
+the default handler for the #GtkWidget::activate signal.)">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_activates_default"
+              c:identifier="gtk_entry_get_activates_default"
+              doc="Retrieves the value set by gtk_entry_set_activates_default().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_width_chars"
+              c:identifier="gtk_entry_set_width_chars"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_chars" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width_chars"
+              c:identifier="gtk_entry_get_width_chars"
+              doc="Gets the value set by gtk_entry_set_width_chars().">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_text"
+              c:identifier="gtk_entry_set_text"
+              doc="Sets the text in the widget to the given
+value, replacing the current contents.
+See gtk_entry_buffer_set_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>
+        </parameters>
+      </method>
+      <method name="get_text"
+              c:identifier="gtk_entry_get_text"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_layout"
+              c:identifier="gtk_entry_get_layout"
+              doc="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.">
+        <return-value transfer-ownership="none"
+                      doc="the #PangoLayout for this entry">
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </return-value>
+      </method>
+      <method name="get_layout_offsets"
+              c:identifier="gtk_entry_get_layout_offsets"
+              doc="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&apos;ll need to connect to the &quot;notify::scroll-offset&quot;
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store X offset of layout, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store Y offset of layout, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_alignment"
+              c:identifier="gtk_entry_set_alignment"
+              doc="Reversed for RTL layouts
+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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_alignment"
+              c:identifier="gtk_entry_get_alignment"
+              doc="Gets the value set by gtk_entry_set_alignment()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="set_completion"
+              c:identifier="gtk_entry_set_completion"
+              doc="Sets @completion to be the auxiliary completion object to use with @entry.
+All further configuration of the completion mechanism is done on"
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="completion"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The #GtkEntryCompletion or %NULL">
+            <type name="EntryCompletion" c:type="GtkEntryCompletion*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_completion"
+              c:identifier="gtk_entry_get_completion"
+              doc="Returns the auxiliary completion object currently in use by @entry."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="EntryCompletion" c:type="GtkEntryCompletion*"/>
+        </return-value>
+      </method>
+      <method name="layout_index_to_text_index"
+              c:identifier="gtk_entry_layout_index_to_text_index"
+              doc="Converts from a position in the entry contents (returned
+by gtk_entry_get_text()) to a position in the
+entry&apos;s #PangoLayout (returned by gtk_entry_get_layout(),
+with text retrieved via pango_layout_get_text()).">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="layout_index" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="text_index_to_layout_index"
+              c:identifier="gtk_entry_text_index_to_layout_index"
+              doc="Converts from a position in the entry&apos;s #PangoLayout (returned by
+gtk_entry_get_layout()) to a position in the entry contents
+(returned by gtk_entry_get_text()).">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="text_index" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_hadjustment"
+              c:identifier="gtk_entry_set_cursor_hadjustment"
+              doc="is moved, or %NULL
+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."
+              version="2.12">
+        <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>
+      </method>
+      <method name="get_cursor_hadjustment"
+              c:identifier="gtk_entry_get_cursor_hadjustment"
+              doc="Retrieves the horizontal cursor adjustment for the entry.
+See gtk_entry_set_cursor_hadjustment().
+if none has been set."
+              version="2.12">
+        <return-value transfer-ownership="none"
+                      doc="the horizontal cursor adjustment, or %NULL">
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="set_progress_fraction"
+              c:identifier="gtk_entry_set_progress_fraction"
+              doc="Causes the entry&apos;s progress indicator to &quot;fill in&quot; the given
+fraction of the bar. The fraction should be between 0.0 and 1.0,
+inclusive."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fraction" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_progress_fraction"
+              c:identifier="gtk_entry_get_progress_fraction"
+              doc="Returns the current fraction of the task that&apos;s been completed.
+See gtk_entry_set_progress_fraction()."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_progress_pulse_step"
+              c:identifier="gtk_entry_set_progress_pulse_step"
+              doc="Sets the fraction of total entry width to move the progress
+bouncing block for each call to gtk_entry_progress_pulse()."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fraction" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_progress_pulse_step"
+              c:identifier="gtk_entry_get_progress_pulse_step"
+              doc="Retrieves the pulse step set with gtk_entry_set_progress_pulse_step()."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="progress_pulse"
+              c:identifier="gtk_entry_progress_pulse"
+              doc="Indicates that some progress is made, but you don&apos;t know how much.
+Causes the entry&apos;s progress indicator to enter &quot;activity mode,&quot;
+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())."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_icon_from_pixbuf"
+              c:identifier="gtk_entry_set_icon_from_pixbuf"
+              doc="Sets the icon shown in the specified position using a pixbuf.
+If @pixbuf is %NULL, no icon will be shown in the specified position."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="pixbuf"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #GdkPixbuf, or %NULL">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_from_stock"
+              c:identifier="gtk_entry_set_icon_from_stock"
+              doc="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."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="stock_id"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The name of the stock item, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_from_icon_name"
+              c:identifier="gtk_entry_set_icon_from_icon_name"
+              doc="Sets the icon shown in the entry at the specified position
+from the current icon theme.
+If the icon name isn&apos;t known, a &quot;broken image&quot; icon will be displayed
+instead.
+If @icon_name is %NULL, no icon will be shown in the specified position."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="icon_name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="An icon name, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_from_gicon"
+              c:identifier="gtk_entry_set_icon_from_gicon"
+              doc="Sets the icon shown in the entry at the specified position
+from the current icon theme.
+If the icon isn&apos;t known, a &quot;broken image&quot; icon will be displayed
+instead.
+If @icon is %NULL, no icon will be shown in the specified position."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="icon"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The icon to set, or %NULL">
+            <type name="Gio.Icon" c:type="GIcon*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_storage_type"
+              c:identifier="gtk_entry_get_icon_storage_type"
+              doc="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."
+              version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="ImageType" c:type="GtkImageType"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_pixbuf"
+              c:identifier="gtk_entry_get_icon_pixbuf"
+              doc="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."
+              version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_stock"
+              c:identifier="gtk_entry_get_icon_stock"
+              doc="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&apos;t set from a stock id"
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_name"
+              c:identifier="gtk_entry_get_icon_name"
+              doc="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&apos;t set from an icon name"
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_gicon"
+              c:identifier="gtk_entry_get_icon_gicon"
+              doc="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).
+is not a #GIcon"
+              version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="Gio.Icon" c:type="GIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_activatable"
+              c:identifier="gtk_entry_set_icon_activatable"
+              doc="Sets whether the icon is activatable."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="activatable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_activatable"
+              c:identifier="gtk_entry_get_icon_activatable"
+              doc="Returns whether the icon is activatable."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_sensitive"
+              c:identifier="gtk_entry_set_icon_sensitive"
+              doc="sensitive or insensitive
+Sets the sensitivity for the specified icon."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="sensitive" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_sensitive"
+              c:identifier="gtk_entry_get_icon_sensitive"
+              doc="Returns whether the icon appears sensitive or insensitive."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_at_pos"
+              c:identifier="gtk_entry_get_icon_at_pos"
+              doc="Finds the icon at the given position and return its index.
+If @x, @y doesn&apos;t lie inside an icon, -1 is returned.
+This function is intended for use in a #GtkWidget::query-tooltip
+signal handler."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </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>
+        </parameters>
+      </method>
+      <method name="set_icon_tooltip_text"
+              c:identifier="gtk_entry_set_icon_tooltip_text"
+              doc="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()."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="tooltip"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the contents of the tooltip for the icon, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_tooltip_text"
+              c:identifier="gtk_entry_get_icon_tooltip_text"
+              doc="Gets the contents of the tooltip on the icon at the specified
+position in @entry.
+with g_free() when done."
+              version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_tooltip_markup"
+              c:identifier="gtk_entry_set_icon_tooltip_markup"
+              doc="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=&quot;PangoMarkupFormat&quot;&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()."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="tooltip"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the contents of the tooltip for the icon, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_tooltip_markup"
+              c:identifier="gtk_entry_get_icon_tooltip_markup"
+              doc="Gets the contents of the tooltip on the icon at the specified
+position in @entry.
+with g_free() when done."
+              version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_drag_source"
+              c:identifier="gtk_entry_set_icon_drag_source"
+              doc="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."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="target_list"
+                     transfer-ownership="none"
+                     doc="in which the data can be provided">
+            <type name="TargetList" c:type="GtkTargetList*"/>
+          </parameter>
+          <parameter name="actions" transfer-ownership="none">
+            <type name="Gdk.DragAction" c:type="GdkDragAction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_current_icon_drag_source"
+              c:identifier="gtk_entry_get_current_icon_drag_source"
+              doc="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."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_icon_window"
+              c:identifier="gtk_entry_get_icon_window"
+              doc="Returns the #GdkWindow which contains the entry&apos;s icon at
+entry in an expose-event callback because it enables the callback
+to distinguish between the text window and entry&apos;s icon windows.
+See also gtk_entry_get_text_window()."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_text"
+              c:identifier="gtk_entry_append_text"
+              doc="Appends the given text to the contents of the widget."
+              deprecated="Use gtk_editable_insert_text() instead."
+              deprecated-version="2.0">
+        <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>
+        </parameters>
+      </method>
+      <method name="prepend_text"
+              c:identifier="gtk_entry_prepend_text"
+              doc="Prepends the given text to the contents of the widget."
+              deprecated="Use gtk_editable_insert_text() instead."
+              deprecated-version="2.0">
+        <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>
+        </parameters>
+      </method>
+      <method name="set_position"
+              c:identifier="gtk_entry_set_position"
+              doc="before the character with the given (base 0) index in the widget.
+The value must be less than or equal to the number of characters
+in the widget. A value of -1 indicates that the position should
+be set after the last character in the entry. Note that this
+position is in characters, not in bytes.
+Sets the cursor position in an entry to the given value."
+              deprecated="Use gtk_editable_set_position() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_region"
+              c:identifier="gtk_entry_select_region"
+              doc="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 will be those characters from @start_pos to the end of
+the text."
+              deprecated="Use gtk_editable_select_region() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="set_editable"
+              c:identifier="gtk_entry_set_editable"
+              doc="in the widget
+Determines if the user can edit the text in the editable
+widget or not."
+              deprecated="Use gtk_editable_set_editable() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="editable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="activates-default" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="buffer" writable="1" construct="1">
+        <type name="EntryBuffer" c:type="GtkEntryBuffer"/>
+      </property>
+      <property name="caps-lock-warning" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="cursor-position">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="editable" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="has-frame" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="im-module"
+                version="2.16"
+                writable="1"
+                doc="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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="inner-border"
+                version="2.10"
+                writable="1"
+                doc="Sets the text area&apos;s border between the text and the frame.">
+        <type name="Border" c:type="GtkBorder"/>
+      </property>
+      <property name="invisible-char"
+                version="2.18"
+                writable="1"
+                doc="The invisible character is used when masking entry contents (in
+\&quot;password mode\&quot;)&quot;). 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.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="invisible-char-set"
+                version="2.16"
+                writable="1"
+                doc="Whether the invisible char has been set for the #GtkEntry.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="max-length" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="overwrite-mode"
+                version="2.14"
+                writable="1"
+                doc="If text is overwritten when typing in the #GtkEntry.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="primary-icon-activatable"
+                version="2.16"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="primary-icon-gicon"
+                version="2.16"
+                writable="1"
+                doc="The #GIcon to use for the primary icon for the entry.">
+        <type name="Gio.Icon" c:type="GIcon"/>
+      </property>
+      <property name="primary-icon-name"
+                version="2.16"
+                writable="1"
+                doc="The icon name to use for the primary icon for the entry.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="primary-icon-pixbuf"
+                version="2.16"
+                writable="1"
+                doc="A pixbuf to use as the primary icon for the entry.">
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf"/>
+      </property>
+      <property name="primary-icon-sensitive"
+                version="2.16"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="primary-icon-stock"
+                version="2.16"
+                writable="1"
+                doc="The stock id to use for the primary icon for the entry.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="primary-icon-storage-type"
+                version="2.16"
+                doc="The representation which is used for the primary icon of the entry.">
+        <type name="ImageType" c:type="GtkImageType"/>
+      </property>
+      <property name="primary-icon-tooltip-markup"
+                version="2.16"
+                writable="1"
+                doc="The contents of the tooltip on the primary icon, which is marked up
+with the &lt;link linkend=&quot;PangoMarkupFormat&quot;&gt;Pango text markup
+language&lt;/link&gt;.
+Also see gtk_entry_set_icon_tooltip_markup().">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="primary-icon-tooltip-text"
+                version="2.16"
+                writable="1"
+                doc="The contents of the tooltip on the primary icon.
+Also see gtk_entry_set_icon_tooltip_text().">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="progress-fraction"
+                version="2.16"
+                writable="1"
+                doc="The current fraction of the task that&apos;s been completed.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="progress-pulse-step"
+                version="2.16"
+                writable="1"
+                doc="The fraction of total entry width to move the progress
+bouncing block for each call to gtk_entry_progress_pulse().">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="scroll-offset">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="secondary-icon-activatable"
+                version="2.16"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="secondary-icon-gicon"
+                version="2.16"
+                writable="1"
+                doc="The #GIcon to use for the secondary icon for the entry.">
+        <type name="Gio.Icon" c:type="GIcon"/>
+      </property>
+      <property name="secondary-icon-name"
+                version="2.16"
+                writable="1"
+                doc="The icon name to use for the secondary icon for the entry.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="secondary-icon-pixbuf"
+                version="2.16"
+                writable="1"
+                doc="An pixbuf to use as the secondary icon for the entry.">
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf"/>
+      </property>
+      <property name="secondary-icon-sensitive"
+                version="2.16"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="secondary-icon-stock"
+                version="2.16"
+                writable="1"
+                doc="The stock id to use for the secondary icon for the entry.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="secondary-icon-storage-type"
+                version="2.16"
+                doc="The representation which is used for the secondary icon of the entry.">
+        <type name="ImageType" c:type="GtkImageType"/>
+      </property>
+      <property name="secondary-icon-tooltip-markup"
+                version="2.16"
+                writable="1"
+                doc="The contents of the tooltip on the secondary icon, which is marked up
+with the &lt;link linkend=&quot;PangoMarkupFormat&quot;&gt;Pango text markup
+language&lt;/link&gt;.
+Also see gtk_entry_set_icon_tooltip_markup().">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="secondary-icon-tooltip-text"
+                version="2.16"
+                writable="1"
+                doc="The contents of the tooltip on the secondary icon.
+Also see gtk_entry_set_icon_tooltip_text().">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="selection-bound">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="shadow-type"
+                version="2.12"
+                writable="1"
+                doc="Which kind of shadow to draw around the entry when
+#GtkEntry:has-frame is set to %TRUE.">
+        <type name="ShadowType" c:type="GtkShadowType"/>
+      </property>
+      <property name="text" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="text-length"
+                version="2.14"
+                doc="The length of the text in the #GtkEntry.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="truncate-multiline"
+                version="2.10"
+                writable="1"
+                doc="When %TRUE, pasted multi-line text is truncated to the first line.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="visibility" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="width-chars" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="xalign"
+                version="2.4"
+                writable="1"
+                doc="The horizontal alignment, from 0 (left) to 1 (right).
+Reversed for RTL layouts.">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="text">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="editable" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="visible" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="overwrite_mode" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="in_drag" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="text_length">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="text_max_length">
+        <type name="uint16" c:type="guint16"/>
+      </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="int" c:type="gint"/>
+      </field>
+      <field name="selection_bound">
+        <type name="int" 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="uint" c:type="guint"/>
+      </field>
+      <field name="need_im_reset" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_frame" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="activates_default" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="cursor_visible" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="in_click" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_cell_renderer" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="editing_canceled" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="mouse_cursor_obscured" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="select_words" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="select_lines" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="resolved_dir" bits="4">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="truncate_multiline" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="button">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="blink_timeout">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="recompute_idle">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scroll_offset">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="ascent">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="descent">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="x_text_size">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="x_n_bytes">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="preedit_length">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="preedit_cursor">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="dnd_position">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="drag_start_x">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="drag_start_y">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="invisible_char">
+        <type name="GLib.unichar" c:type="gunichar"/>
+      </field>
+      <field name="width_chars">
+        <type name="int" c:type="gint"/>
+      </field>
+      <glib:signal name="activate"
+                   doc="A  &lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="backspace"
+                   doc="The ::backspace signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="copy-clipboard"
+                   doc="The ::copy-clipboard signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cut-clipboard"
+                   doc="The ::cut-clipboard signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="delete-from-cursor"
+                   doc="The ::delete-from-cursor signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="DeleteType" c:type="GtkDeleteType"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="icon-press"
+                   doc="The ::icon-press signal is emitted when an activatable icon
+is clicked."
+                   version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="icon-release"
+                   doc="The ::icon-release signal is emitted on the button release from a
+mouse click over an activatable icon."
+                   version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_pos" transfer-ownership="none">
+            <type name="EntryIconPosition" c:type="GtkEntryIconPosition"/>
+          </parameter>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="insert-at-cursor"
+                   doc="The ::insert-at-cursor signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-cursor"
+                   doc="The ::move-cursor signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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;">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="step" transfer-ownership="none">
+            <type name="MovementStep" c:type="GtkMovementStep"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="extend_selection" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="paste-clipboard"
+                   doc="The ::paste-clipboard signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="populate-popup"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="menu" transfer-ownership="none">
+            <type name="Menu" c:type="GtkMenu"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="preedit-changed"
+                   doc="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."
+                   version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="preedit" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="toggle-overwrite"
+                   doc="The ::toggle-overwrite signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <class name="EntryBuffer"
+           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"
+                   doc="Create a new GtkEntryBuffer object.
+Optionally, specify initial text to set in the buffer."
+                   version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="EntryBuffer" c:type="GtkEntryBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="initial_chars"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="initial buffer text, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="n_initial_chars" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="get_text">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_bytes" direction="out" transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_length" invoker="get_length">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="insert_text" invoker="insert_text">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="uint" 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="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="delete_text" invoker="delete_text">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="n_chars" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_bytes"
+              c:identifier="gtk_entry_buffer_get_bytes"
+              doc="Retrieves the length in bytes of the buffer.
+See gtk_entry_buffer_get_length()."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </return-value>
+      </method>
+      <method name="get_length"
+              c:identifier="gtk_entry_buffer_get_length"
+              doc="Retrieves the length in characters of the buffer."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_text"
+              c:identifier="gtk_entry_buffer_get_text"
+              doc="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."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_text"
+              c:identifier="gtk_entry_buffer_set_text"
+              doc="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."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="chars" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="n_chars" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_max_length"
+              c:identifier="gtk_entry_buffer_set_max_length"
+              doc="(other than the maximum length of entries.) The value passed in will
+be clamped to the range 0-65536.
+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."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max_length" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_max_length"
+              c:identifier="gtk_entry_buffer_get_max_length"
+              doc="Retrieves the maximum allowed length of the text in
+in #GtkEntryBuffer, or 0 if there is no maximum."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="insert_text"
+              c:identifier="gtk_entry_buffer_insert_text"
+              doc="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."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="uint" 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="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_text"
+              c:identifier="gtk_entry_buffer_delete_text"
+              doc="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."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="n_chars" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="emit_inserted_text"
+              c:identifier="gtk_entry_buffer_emit_inserted_text"
+              doc="Used when subclassing #GtkEntryBuffer"
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="uint" 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="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="emit_deleted_text"
+              c:identifier="gtk_entry_buffer_emit_deleted_text"
+              doc="Used when subclassing #GtkEntryBuffer"
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="n_chars" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="length"
+                version="2.18"
+                doc="The length (in characters) of the text in buffer.">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="max-length"
+                version="2.18"
+                writable="1"
+                doc="The maximum length (in characters) of the text in the buffer.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="text"
+                version="2.18"
+                writable="1"
+                doc="The contents of the buffer.">
+        <type name="utf8" c:type="gchararray"/>
+      </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">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="inserted-text">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <type name="uint" c:type="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" c:type="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="uint" 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="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="deleted_text">
+        <callback name="deleted_text" c:type="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="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="n_chars" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_text">
+        <callback name="get_text" c:type="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"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="size_t" c:type="gsize*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_length">
+        <callback name="get_length" c:type="get_length">
+          <return-value transfer-ownership="none">
+            <type name="uint" 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" c:type="insert_text">
+          <return-value transfer-ownership="none">
+            <type name="uint" 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">
+              <type name="uint" 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="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="delete_text">
+        <callback name="delete_text" c:type="delete_text">
+          <return-value transfer-ownership="none">
+            <type name="uint" 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">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="n_chars" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved0">
+        <callback name="gtk_reserved0" c:type="_gtk_reserved0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved5">
+        <callback name="gtk_reserved5" c:type="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="EntryBufferPrivate" c:type="GtkEntryBufferPrivate">
+    </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" c:type="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" c:type="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" c:type="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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="extend_selection" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert_at_cursor">
+        <callback name="insert_at_cursor" c:type="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" c:type="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="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="backspace">
+        <callback name="backspace" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" direction="out" transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="y" direction="out" transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </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>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="EntryCompletion"
+           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"
+                   doc="Creates a new #GtkEntryCompletion object."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="EntryCompletion" c:type="GtkEntryCompletion*"/>
+        </return-value>
+      </constructor>
+      <method name="get_entry"
+              c:identifier="gtk_entry_completion_get_entry"
+              doc="Gets the entry @completion has been attached to."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_model"
+              c:identifier="gtk_entry_completion_set_model"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="model"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The #GtkTreeModel.">
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_model"
+              c:identifier="gtk_entry_completion_get_model"
+              doc="Returns the model the #GtkEntryCompletion is using as data source.
+Returns %NULL if the model is unset."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </return-value>
+      </method>
+      <method name="set_match_func"
+              c:identifier="gtk_entry_completion_set_match_func"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="EntryCompletionMatchFunc"
+                  c:type="GtkEntryCompletionMatchFunc"/>
+          </parameter>
+          <parameter name="func_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="func_notify" transfer-ownership="none" scope="call">
+            <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"
+              doc="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)."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="length" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_minimum_key_length"
+              c:identifier="gtk_entry_completion_get_minimum_key_length"
+              doc="Returns the minimum key length as set for @completion."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="complete"
+              c:identifier="gtk_entry_completion_complete"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="insert_prefix"
+              c:identifier="gtk_entry_completion_insert_prefix"
+              doc="Requests a prefix insertion."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="insert_action_text"
+              c:identifier="gtk_entry_completion_insert_action_text"
+              doc="Inserts an action in @completion&apos;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()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_action_markup"
+              c:identifier="gtk_entry_completion_insert_action_markup"
+              doc="Inserts an action in @completion&apos;s action item list at position @index_
+with markup @markup."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="markup" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_action"
+              c:identifier="gtk_entry_completion_delete_action"
+              doc="Deletes the action at @index_ from @completion&apos;s action list."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_inline_completion"
+              c:identifier="gtk_entry_completion_set_inline_completion"
+              doc="Sets whether the common prefix of the possible completions should
+be automatically inserted in the entry."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="inline_completion" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_inline_completion"
+              c:identifier="gtk_entry_completion_get_inline_completion"
+              doc="Returns whether the common prefix of the possible completions should
+be automatically inserted in the entry."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_inline_selection"
+              c:identifier="gtk_entry_completion_set_inline_selection"
+              doc="Sets whether it is possible to cycle through the possible completions
+inside the entry."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="inline_selection" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_inline_selection"
+              c:identifier="gtk_entry_completion_get_inline_selection"
+              doc="Returns %TRUE if inline-selection mode is turned on."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_popup_completion"
+              c:identifier="gtk_entry_completion_set_popup_completion"
+              doc="Sets whether the completions should be presented in a popup window."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="popup_completion" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_popup_completion"
+              c:identifier="gtk_entry_completion_get_popup_completion"
+              doc="Returns whether the completions should be presented in a popup window."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_popup_set_width"
+              c:identifier="gtk_entry_completion_set_popup_set_width"
+              doc="Sets whether the completion popup window will be resized to be the same
+width as the entry."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="popup_set_width" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_popup_set_width"
+              c:identifier="gtk_entry_completion_get_popup_set_width"
+              doc="Returns whether the  completion popup window will be resized to the
+width of the entry.
+the entry"
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_popup_single_match"
+              c:identifier="gtk_entry_completion_set_popup_single_match"
+              doc="match
+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=&quot;GtkEntryCompletion--inline-completion&quot;&gt;inline
+completion&lt;/link&gt;."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="popup_single_match" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_popup_single_match"
+              c:identifier="gtk_entry_completion_get_popup_single_match"
+              doc="Returns whether the completion popup window will appear even if there is
+only a single match.
+number of matches."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_completion_prefix"
+              c:identifier="gtk_entry_completion_get_completion_prefix"
+              doc="Get the original text entered by the user that triggered
+the completion or %NULL if there&apos;s no completion ongoing."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_text_column"
+              c:identifier="gtk_entry_completion_set_text_column"
+              doc="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&apos;t want the cell
+renderer, use g_object_set() to set the ::text_column property directly."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text_column"
+              c:identifier="gtk_entry_completion_get_text_column"
+              doc="Returns the column in the model of @completion to get strings from."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <property name="inline-completion"
+                version="2.6"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="inline-selection"
+                version="2.12"
+                writable="1"
+                doc="Determines whether the possible completions on the popup
+will appear in the entry as you navigate through them.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="minimum-key-length" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="model" writable="1">
+        <type name="TreeModel" c:type="GtkTreeModel"/>
+      </property>
+      <property name="popup-completion"
+                version="2.6"
+                writable="1"
+                doc="Determines whether the possible completions should be
+shown in a popup window.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="popup-set-width"
+                version="2.8"
+                writable="1"
+                doc="Determines whether the completions popup window will be
+resized to the width of the entry.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="popup-single-match"
+                version="2.8"
+                writable="1"
+                doc="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=&quot;GtkEntryCompletion--inline-completion&quot;&gt;inline
+completion&lt;/link&gt;.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="text-column"
+                version="2.6"
+                writable="1"
+                doc="The column of the model containing the strings.
+Note that the strings must be UTF-8.">
+        <type name="int" c:type="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"
+                   doc="Gets emitted when an action is activated."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="cursor-on-match"
+                   doc="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."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="boolean" 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>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="insert-prefix"
+                   doc="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 &apos;/&apos;."
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="prefix" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="match-selected"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="boolean" 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>
+        </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" c:type="match_selected">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="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="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert_prefix">
+        <callback name="insert_prefix" c:type="insert_prefix">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="cursor_on_match">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+        <callback name="gtk_reserved0" c:type="_gtk_reserved0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_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="boolean" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="EntryCompletionPrivate" c:type="GtkEntryCompletionPrivate">
+    </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: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"/>
+      <constructor name="new" c:identifier="gtk_event_box_new">
+        <return-value transfer-ownership="full">
+          <type name="EventBox" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_visible_window"
+              c:identifier="gtk_event_box_get_visible_window"
+              doc="Returns whether the event box has a visible window.
+See gtk_event_box_set_visible_window() for details."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_visible_window"
+              c:identifier="gtk_event_box_set_visible_window"
+              doc="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&apos;t propagated up by the windowing system, but only by GTK+.
+The practical effect of this is if an event isn&apos;t in the event
+mask for the descendant window (see gtk_widget_add_events()),
+it won&apos;t be received by the event box.
+&lt;/para&gt;&lt;para&gt;
+This problem doesn&apos;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;"
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible_window" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_above_child"
+              c:identifier="gtk_event_box_get_above_child"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_above_child"
+              c:identifier="gtk_event_box_set_above_child"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="above_child" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="above-child" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="visible-window" writable="1">
+        <type name="boolean" c:type="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: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"/>
+      <constructor name="new"
+                   c:identifier="gtk_expander_new"
+                   doc="Creates a new expander using @label as the text of the label."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Expander" 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_expander_new_with_mnemonic"
+                   doc="mnemonic character
+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 &apos;__&apos; (two
+underscores). The first underlined character represents a keyboard
+accelerator called a mnemonic.
+Pressing Alt and that key activates the button."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Expander" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the text of the label with an underscore in front of the">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_expanded"
+              c:identifier="gtk_expander_set_expanded"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="expanded" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_expanded"
+              c:identifier="gtk_expander_get_expanded"
+              doc="Queries a #GtkExpander and returns its current state. Returns %TRUE
+if the child widget is revealed.
+See gtk_expander_set_expanded()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_spacing"
+              c:identifier="gtk_expander_set_spacing"
+              doc="Sets the spacing field of @expander, which is the number of pixels to
+place between expander and the child."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_spacing"
+              c:identifier="gtk_expander_get_spacing"
+              doc="Gets the value set by gtk_expander_set_spacing()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_label"
+              c:identifier="gtk_expander_set_label"
+              doc="Sets the text of the label of the expander to @label.
+This will also clear any previously set labels."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a string">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_label"
+              c:identifier="gtk_expander_get_label"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_use_underline"
+              c:identifier="gtk_expander_set_use_underline"
+              doc="If true, an underline in the text of the expander label indicates
+the next character should be used for the mnemonic accelerator key."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_underline" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_underline"
+              c:identifier="gtk_expander_get_use_underline"
+              doc="Returns whether an embedded underline in the expander label indicates a
+mnemonic. See gtk_expander_set_use_underline().
+indicates the mnemonic accelerator keys."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_use_markup"
+              c:identifier="gtk_expander_set_use_markup"
+              doc="Sets whether the text of the label contains markup in &lt;link
+linkend=&quot;PangoMarkupFormat&quot;&gt;Pango&apos;s text markup
+language&lt;/link&gt;. See gtk_label_set_markup()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_markup" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_markup"
+              c:identifier="gtk_expander_get_use_markup"
+              doc="Returns whether the label&apos;s text is interpreted as marked up with
+the &lt;link linkend=&quot;PangoMarkupFormat&quot;&gt;Pango text markup
+language&lt;/link&gt;. See gtk_expander_set_use_markup ()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_label_widget"
+              c:identifier="gtk_expander_set_label_widget"
+              doc="Set the label widget for the expander. This is the widget
+that will appear embedded alongside the expander arrow."
+              version="2.4">
+        <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="the new label widget">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_label_widget"
+              c:identifier="gtk_expander_get_label_widget"
+              doc="Retrieves the label widget for the frame. See
+gtk_expander_set_label_widget()."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <property name="expanded" writable="1" construct="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="label" writable="1" construct="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="label-widget" writable="1">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <property name="spacing" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="use-markup" writable="1" construct="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="use-underline" writable="1" construct="1">
+        <type name="boolean" c:type="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="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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">
+    </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:type="GtkFileChooser"
+               glib:type-name="GtkFileChooser"
+               glib:get-type="gtk_file_chooser_get_type">
+      <prerequisite name="Widget"/>
+      <method name="set_action"
+              c:identifier="gtk_file_chooser_set_action"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <type name="FileChooserAction" c:type="GtkFileChooserAction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_action"
+              c:identifier="gtk_file_chooser_get_action"
+              doc="Gets the type of operation that the file chooser is performing; see
+gtk_file_chooser_set_action()."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="FileChooserAction" c:type="GtkFileChooserAction"/>
+        </return-value>
+      </method>
+      <method name="set_local_only"
+              c:identifier="gtk_file_chooser_set_local_only"
+              doc="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(),"
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="local_only" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_local_only"
+              c:identifier="gtk_file_chooser_get_local_only"
+              doc="Gets whether only local files can be selected in the
+file selector. See gtk_file_chooser_set_local_only()"
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_select_multiple"
+              c:identifier="gtk_file_chooser_set_select_multiple"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="select_multiple" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_select_multiple"
+              c:identifier="gtk_file_chooser_get_select_multiple"
+              doc="Gets whether multiple files can be selected in the file
+selector. See gtk_file_chooser_set_select_multiple()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_show_hidden"
+              c:identifier="gtk_file_chooser_set_show_hidden"
+              doc="Sets whether hidden files and folders are displayed in the file selector."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_hidden" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_show_hidden"
+              c:identifier="gtk_file_chooser_get_show_hidden"
+              doc="Gets whether hidden files and folders are displayed in the file selector.
+See gtk_file_chooser_set_show_hidden()."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_do_overwrite_confirmation"
+              c:identifier="gtk_file_chooser_set_do_overwrite_confirmation"
+              doc="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."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="do_overwrite_confirmation"
+                     transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_do_overwrite_confirmation"
+              c:identifier="gtk_file_chooser_get_do_overwrite_confirmation"
+              doc="Queries whether a file chooser is set to confirm for overwriting when the user
+types a file name that already exists.
+%FALSE otherwise."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_create_folders"
+              c:identifier="gtk_file_chooser_set_create_folders"
+              doc="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."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="create_folders" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_create_folders"
+              c:identifier="gtk_file_chooser_get_create_folders"
+              doc="Gets whether file choser will offer to create new folders.
+See gtk_file_chooser_set_create_folders()."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_current_name"
+              c:identifier="gtk_file_chooser_set_current_name"
+              doc="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 &quot;Save As...&quot; 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."
+              version="2.4">
+        <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_filename"
+              c:identifier="gtk_file_chooser_get_filename"
+              doc="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&apos;t
+be represented with a local filename. Free with g_free()."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_filename"
+              c:identifier="gtk_file_chooser_set_filename"
+              doc="Sets @filename as the current filename for the file chooser, by changing
+to the file&apos;s parent folder and actually selecting the file in list.  If
+the @chooser is in %GTK_FILE_CHOOSER_ACTION_SAVE mode, the file&apos;s base name
+will also appear in the dialog&apos;s file name entry.
+If the file name isn&apos;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&apos;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, &quot;Untitled document&quot;);
+}
+else
+{
+/&amp;ast; the user edited an existing document &amp;ast;/
+gtk_file_chooser_set_filename (chooser, existing_filename);
+}
+]|
+selected successfully, %FALSE otherwise."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_filename"
+              c:identifier="gtk_file_chooser_select_filename"
+              doc="Selects a filename. If the file name isn&apos;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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect_filename"
+              c:identifier="gtk_file_chooser_unselect_filename"
+              doc="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."
+              version="2.4">
+        <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>
+      </method>
+      <method name="select_all"
+              c:identifier="gtk_file_chooser_select_all"
+              doc="Selects all the files in the current folder of a file chooser."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unselect_all"
+              c:identifier="gtk_file_chooser_unselect_all"
+              doc="Unselects all the files in the current folder of a file chooser."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_filenames"
+              c:identifier="gtk_file_chooser_get_filenames"
+              doc="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()."
+              version="2.4">
+        <return-value transfer-ownership="full"
+                      doc="a #GSList containing the filenames of all selected">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="set_current_folder"
+              c:identifier="gtk_file_chooser_set_current_folder"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_current_folder"
+              c:identifier="gtk_file_chooser_get_current_folder"
+              doc="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. &quot;/home/username/Documents&quot;), 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. &quot;/home/username/Documents/selected-folder/&quot;.  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."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_uri"
+              c:identifier="gtk_file_chooser_get_uri"
+              doc="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()"
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_uri"
+              c:identifier="gtk_file_chooser_set_uri"
+              doc="Sets the file referred to by @uri as the current file for the file chooser,
+by changing to the URI&apos;s parent folder and actually selecting the URI in the
+list.  If the @chooser is %GTK_FILE_CHOOSER_ACTION_SAVE mode, the URI&apos;s base
+name will also appear in the dialog&apos;s file name entry.
+If the URI isn&apos;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&apos;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, &quot;Untitled document&quot;);
+}
+else
+{
+/&amp;ast; the user edited an existing document &amp;ast;/
+gtk_file_chooser_set_uri (chooser, existing_uri);
+}
+]|
+selected successfully, %FALSE otherwise."
+              version="2.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="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_uri"
+              c:identifier="gtk_file_chooser_select_uri"
+              doc="Selects the file to by @uri. If the URI doesn&apos;t refer to a
+file in the current folder of @chooser, then the current folder of
+selected successfully, %FALSE otherwise."
+              version="2.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="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect_uri"
+              c:identifier="gtk_file_chooser_unselect_uri"
+              doc="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."
+              version="2.4">
+        <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="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uris"
+              c:identifier="gtk_file_chooser_get_uris"
+              doc="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()."
+              version="2.4">
+        <return-value transfer-ownership="full"
+                      doc="a #GSList containing the URIs of all selected">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="set_current_folder_uri"
+              c:identifier="gtk_file_chooser_set_current_folder_uri"
+              doc="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."
+              version="2.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>
+        </parameters>
+      </method>
+      <method name="get_current_folder_uri"
+              c:identifier="gtk_file_chooser_get_current_folder_uri"
+              doc="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. &quot;file:///home/username/Documents&quot;), 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. &quot;file:///home/username/Documents/selected-folder/&quot;.  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."
+              version="2.4">
+        <return-value transfer-ownership="full" doc="This">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_file"
+              c:identifier="gtk_file_chooser_get_file"
+              doc="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.
+g_object_unref() to release it."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Gio.File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <method name="set_file"
+              c:identifier="gtk_file_chooser_set_file"
+              doc="Sets @file as the current filename for the file chooser, by changing
+to the file&apos;s parent folder and actually selecting the file in list.  If
+the @chooser is in %GTK_FILE_CHOOSER_ACTION_SAVE mode, the file&apos;s base name
+will also appear in the dialog&apos;s file name entry.
+If the file name isn&apos;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&apos;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, &quot;Untitled document&quot;);
+}
+else
+{
+/&amp;ast; the user edited an existing document &amp;ast;/
+gtk_file_chooser_set_file (chooser, existing_file);
+}
+]|
+selected successfully, %FALSE otherwise."
+              version="2.14"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file" transfer-ownership="none">
+            <type name="Gio.File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_file"
+              c:identifier="gtk_file_chooser_select_file"
+              doc="Selects the file referred to by @file. An internal function. See
+_gtk_file_chooser_select_uri().
+selected successfully, %FALSE otherwise."
+              version="2.14"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file" transfer-ownership="none">
+            <type name="Gio.File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect_file"
+              c:identifier="gtk_file_chooser_unselect_file"
+              doc="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."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="file" transfer-ownership="none">
+            <type name="Gio.File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_files"
+              c:identifier="gtk_file_chooser_get_files"
+              doc="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()."
+              version="2.14">
+        <return-value transfer-ownership="full"
+                      doc="a #GSList containing a #GFile for each selected">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="set_current_folder_file"
+              c:identifier="gtk_file_chooser_set_current_folder_file"
+              doc="Sets the current folder for @chooser from a #GFile.
+Internal function, see gtk_file_chooser_set_current_folder_uri().
+otherwise."
+              version="2.14"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file" transfer-ownership="none">
+            <type name="Gio.File" c:type="GFile*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_current_folder_file"
+              c:identifier="gtk_file_chooser_get_current_folder_file"
+              doc="Gets the current folder of @chooser as #GFile.
+See gtk_file_chooser_get_current_folder_uri()."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Gio.File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <method name="set_preview_widget"
+              c:identifier="gtk_file_chooser_set_preview_widget"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="preview_widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preview_widget"
+              c:identifier="gtk_file_chooser_get_preview_widget"
+              doc="Gets the current preview widget; see
+gtk_file_chooser_set_preview_widget()."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_preview_widget_active"
+              c:identifier="gtk_file_chooser_set_preview_widget_active"
+              doc="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."
+              version="2.4">
+        <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>
+      </method>
+      <method name="get_preview_widget_active"
+              c:identifier="gtk_file_chooser_get_preview_widget_active"
+              doc="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()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_use_preview_label"
+              c:identifier="gtk_file_chooser_set_use_preview_label"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_label" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_preview_label"
+              c:identifier="gtk_file_chooser_get_use_preview_label"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_preview_filename"
+              c:identifier="gtk_file_chooser_get_preview_filename"
+              doc="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()"
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_preview_uri"
+              c:identifier="gtk_file_chooser_get_preview_uri"
+              doc="Gets the URI that should be previewed in a custom preview
+widget. See gtk_file_chooser_set_preview_widget().
+selected. Free with g_free()."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_preview_file"
+              c:identifier="gtk_file_chooser_get_preview_file"
+              doc="Gets the #GFile that should be previewed in a custom preview
+Internal function, see gtk_file_chooser_get_preview_uri().
+is selected. Free with g_object_unref()."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Gio.File" c:type="GFile*"/>
+        </return-value>
+      </method>
+      <method name="set_extra_widget"
+              c:identifier="gtk_file_chooser_set_extra_widget"
+              doc="Sets an application-supplied widget to provide extra options to the user."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="extra_widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_extra_widget"
+              c:identifier="gtk_file_chooser_get_extra_widget"
+              doc="Gets the current preview widget; see
+gtk_file_chooser_set_extra_widget()."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="add_filter"
+              c:identifier="gtk_file_chooser_add_filter"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none">
+            <type name="FileFilter" c:type="GtkFileFilter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_filter"
+              c:identifier="gtk_file_chooser_remove_filter"
+              doc="Removes @filter from the list of filters that the user can select between."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none">
+            <type name="FileFilter" c:type="GtkFileFilter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_filters"
+              c:identifier="gtk_file_chooser_list_filters"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="container"
+                      doc="a #GSList containing the current set of">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="set_filter"
+              c:identifier="gtk_file_chooser_set_filter"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none">
+            <type name="FileFilter" c:type="GtkFileFilter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_filter"
+              c:identifier="gtk_file_chooser_get_filter"
+              doc="Gets the current filter; see gtk_file_chooser_set_filter()."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="FileFilter" c:type="GtkFileFilter*"/>
+        </return-value>
+      </method>
+      <method name="add_shortcut_folder"
+              c:identifier="gtk_file_chooser_add_shortcut_folder"
+              doc="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
+&quot;/usr/share/mydrawprogram/Clipart&quot; folder to the volume list.
+otherwise.  In the latter case, the @error will be set as appropriate."
+              version="2.4"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="folder" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_shortcut_folder"
+              c:identifier="gtk_file_chooser_remove_shortcut_folder"
+              doc="Removes a folder from a file chooser&apos;s list of shortcut folders.
+In the latter case, the @error will be set as appropriate."
+              version="2.4"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="folder" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_shortcut_folders"
+              c:identifier="gtk_file_chooser_list_shortcut_folders"
+              doc="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()."
+              version="2.4">
+        <return-value transfer-ownership="full"
+                      doc="A list of folder filenames, or %NULL if there are no shortcut">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="add_shortcut_folder_uri"
+              c:identifier="gtk_file_chooser_add_shortcut_folder_uri"
+              doc="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
+&quot;file:///usr/share/mydrawprogram/Clipart&quot; folder to the volume list.
+otherwise.  In the latter case, the @error will be set as appropriate."
+              version="2.4"
+              throws="1">
+        <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="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_shortcut_folder_uri"
+              c:identifier="gtk_file_chooser_remove_shortcut_folder_uri"
+              doc="Removes a folder URI from a file chooser&apos;s list of shortcut folders.
+In the latter case, the @error will be set as appropriate."
+              version="2.4"
+              throws="1">
+        <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="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_shortcut_folder_uris"
+              c:identifier="gtk_file_chooser_list_shortcut_folder_uris"
+              doc="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()."
+              version="2.4">
+        <return-value transfer-ownership="full"
+                      doc="A list of folder URIs, or %NULL if there are no shortcut">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <property name="action" writable="1">
+        <type name="FileChooserAction" c:type="GtkFileChooserAction"/>
+      </property>
+      <property name="create-folders"
+                version="2.18"
+                writable="1"
+                doc="Whether a file chooser not in %GTK_FILE_CHOOSER_ACTION_OPEN mode
+will offer the user to create new folders.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="do-overwrite-confirmation"
+                version="2.8"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="extra-widget" writable="1">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <property name="file-system-backend"
+                readable="0"
+                writable="1"
+                construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="filter" writable="1">
+        <type name="FileFilter" c:type="GtkFileFilter"/>
+      </property>
+      <property name="local-only" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="preview-widget" writable="1">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <property name="preview-widget-active" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="select-multiple" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="show-hidden" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="use-preview-label" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <glib:signal name="confirm-overwrite"
+                   doc="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=&quot;gtkfilechooser-confirmation&quot;&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, &quot;confirm-overwrite&quot;,
+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."
+                   version="2.8">
+        <return-value transfer-ownership="full">
+          <type name="FileChooserConfirmation"
+                c:type="GtkFileChooserConfirmation"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="current-folder-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="file-activated">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="selection-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="update-preview">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </interface>
+    <enumeration name="FileChooserAction"
+                 doc="will only let the user pick an existing file.
+will let the user pick an existing file, or type in a new
+filename.
+selecting folders.  The file chooser will let the user pick an
+existing folder.
+new folder.  The file chooser will let the user name an existing or
+new folder.
+Describes whether a #GtkFileChooser is being used to open existing files
+or to save to a possibly new file."
+                 glib:type-name="GtkFileChooserAction"
+                 glib:get-type="gtk_file_chooser_action_get_type"
+                 c:type="GtkFileChooserAction">
+      <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: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"/>
+      <constructor name="new"
+                   c:identifier="gtk_file_chooser_button_new"
+                   doc="Creates a new file-selecting button widget."
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="FileChooserButton" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="action" transfer-ownership="none">
+            <type name="FileChooserAction" c:type="GtkFileChooserAction"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_backend"
+                   c:identifier="gtk_file_chooser_button_new_with_backend"
+                   doc="Creates a new file-selecting button widget using @backend."
+                   version="2.6"
+                   deprecated="Use gtk_file_chooser_button_new() instead."
+                   deprecated-version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="FileChooserButton" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="action" transfer-ownership="none">
+            <type name="FileChooserAction" c:type="GtkFileChooserAction"/>
+          </parameter>
+          <parameter name="backend" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_dialog"
+                   c:identifier="gtk_file_chooser_button_new_with_dialog"
+                   doc="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."
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="FileChooserButton" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="dialog" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_title"
+              c:identifier="gtk_file_chooser_button_get_title"
+              doc="Retrieves the title of the browse dialog used by @button. The returned value
+should not be modified or freed."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_title"
+              c:identifier="gtk_file_chooser_button_set_title"
+              doc="Modifies the @title of the browse dialog used by @button."
+              version="2.6">
+        <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="get_width_chars"
+              c:identifier="gtk_file_chooser_button_get_width_chars"
+              doc="Retrieves the width in characters of the @button widget&apos;s entry and/or label."
+              version="2.6">
+        <return-value transfer-ownership="none"
+                      doc="that the button will use to size itself.">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_width_chars"
+              c:identifier="gtk_file_chooser_button_set_width_chars"
+              doc="Sets the width (in characters) that @button will use to @n_chars."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_chars" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_focus_on_click"
+              c:identifier="gtk_file_chooser_button_get_focus_on_click"
+              doc="Returns whether the button grabs focus when it is clicked with the mouse.
+See gtk_file_chooser_button_set_focus_on_click().
+the mouse."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_focus_on_click"
+              c:identifier="gtk_file_chooser_button_set_focus_on_click"
+              doc="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&apos;t want the keyboard focus removed from the main area of the
+application."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="focus_on_click" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="dialog"
+                version="2.6"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                doc="Instance of the #GtkFileChooserDialog associated with the button.">
+        <type name="FileChooser" c:type="GtkFileChooser"/>
+      </property>
+      <property name="focus-on-click"
+                version="2.10"
+                writable="1"
+                doc="Whether the #GtkFileChooserButton button grabs focus when it is clicked
+with the mouse.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="title"
+                version="2.6"
+                writable="1"
+                doc="Title to put on the #GtkFileChooserDialog associated with the button.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="width-chars"
+                version="2.6"
+                writable="1"
+                doc="The width of the entry and label inside the button, in characters.">
+        <type name="int" c:type="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"
+                   doc="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."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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="any" c:type="void*"/>
+      </field>
+      <field name="__gtk_reserved2">
+        <type name="any" c:type="void*"/>
+      </field>
+      <field name="__gtk_reserved3">
+        <type name="any" c:type="void*"/>
+      </field>
+      <field name="__gtk_reserved4">
+        <type name="any" c:type="void*"/>
+      </field>
+      <field name="__gtk_reserved5">
+        <type name="any" c:type="void*"/>
+      </field>
+      <field name="__gtk_reserved6">
+        <type name="any" c:type="void*"/>
+      </field>
+      <field name="__gtk_reserved7">
+        <type name="any" c:type="void*"/>
+      </field>
+    </record>
+    <record name="FileChooserButtonPrivate"
+            c:type="GtkFileChooserButtonPrivate">
+    </record>
+    <enumeration name="FileChooserConfirmation"
+                 doc="its stock dialog to confirm about overwriting an existing file.
+terminate and accept the user&apos;s choice of a file name.
+continue running, so as to let the user select another file name.
+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&apos;s choice of a filename, or
+let the user choose another filename."
+                 version="2.8"
+                 glib:type-name="GtkFileChooserConfirmation"
+                 glib:get-type="gtk_file_chooser_confirmation_get_type"
+                 c:type="GtkFileChooserConfirmation">
+      <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: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"/>
+      <constructor name="new"
+                   c:identifier="gtk_file_chooser_dialog_new"
+                   doc="Creates a new #GtkFileChooserDialog.  This function is analogous to
+gtk_dialog_new_with_buttons()."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="FileChooserDialog" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="title"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Title of the dialog, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Transient parent of the dialog, or %NULL">
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+          <parameter name="action" transfer-ownership="none">
+            <type name="FileChooserAction" c:type="GtkFileChooserAction"/>
+          </parameter>
+          <parameter name="first_button_text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="stock ID or text to go in the first button, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_backend"
+                   c:identifier="gtk_file_chooser_dialog_new_with_backend"
+                   doc="Creates a new #GtkFileChooserDialog with a specified backend. This is
+especially useful if you use gtk_file_chooser_set_local_only() to allow
+non-local files and you use a more expressive vfs, such as gnome-vfs,
+to load files."
+                   version="2.4"
+                   deprecated="Use gtk_file_chooser_dialog_new() instead."
+                   deprecated-version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="FileChooserDialog" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="title"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Title of the dialog, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Transient parent of the dialog, or %NULL">
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+          <parameter name="action" transfer-ownership="none">
+            <type name="FileChooserAction" c:type="GtkFileChooserAction"/>
+          </parameter>
+          <parameter name="backend" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="first_button_text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="stock ID or text to go in the first button, or %NULL">
+            <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">
+    </record>
+    <enumeration name="FileChooserError"
+                 doc="adding a bookmark).
+These identify the various errors that can occur while calling
+#GtkFileChooser functions."
+                 glib:type-name="GtkFileChooserError"
+                 glib:get-type="gtk_file_chooser_error_get_type"
+                 c:type="GtkFileChooserError"
+                 glib:error-quark="gtk_file_chooser_error_quark">
+      <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: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"/>
+      <constructor name="new"
+                   c:identifier="gtk_file_chooser_widget_new"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="FileChooserWidget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <type name="FileChooserAction" c:type="GtkFileChooserAction"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_backend"
+                   c:identifier="gtk_file_chooser_widget_new_with_backend"
+                   doc="Creates a new #GtkFileChooserWidget with a specified backend.  This is
+especially useful if you use gtk_file_chooser_set_local_only() to allow
+non-local files.  This is a file chooser widget that can be embedded in
+custom windows and it is the same widget that is used by
+#GtkFileChooserDialog."
+                   version="2.4"
+                   deprecated="Use gtk_file_chooser_widget_new() instead."
+                   deprecated-version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="FileChooserWidget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <type name="FileChooserAction" c:type="GtkFileChooserAction"/>
+          </parameter>
+          <parameter name="backend" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </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">
+    </record>
+    <class name="FileFilter"
+           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"
+                   doc="Creates a new #GtkFileFilter with no rules added to it.
+Such a filter doesn&apos;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, &quot;*&quot;);
+]|"
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="FileFilter" c:type="GtkFileFilter*"/>
+        </return-value>
+      </constructor>
+      <method name="set_name"
+              c:identifier="gtk_file_filter_set_name"
+              doc="to remove any existing name.
+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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the human-readable-name for the filter, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name"
+              c:identifier="gtk_file_filter_get_name"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="add_mime_type"
+              c:identifier="gtk_file_filter_add_mime_type"
+              doc="Adds a rule allowing a given mime type to @filter."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mime_type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_pattern"
+              c:identifier="gtk_file_filter_add_pattern"
+              doc="Adds a rule allowing a shell style glob to a filter."
+              version="2.4">
+        <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="add_pixbuf_formats"
+              c:identifier="gtk_file_filter_add_pixbuf_formats"
+              doc="Adds a rule allowing image files in the formats supported
+by GdkPixbuf."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_custom"
+              c:identifier="gtk_file_filter_add_custom"
+              doc="filter function needs.
+the file will be displayed.
+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&apos;t needed by the filter."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="needed" transfer-ownership="none">
+            <type name="FileFilterFlags" c:type="GtkFileFilterFlags"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <type name="FileFilterFunc" c:type="GtkFileFilterFunc"/>
+          </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="get_needed"
+              c:identifier="gtk_file_filter_get_needed"
+              doc="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()"
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="FileFilterFlags" c:type="GtkFileFilterFlags"/>
+        </return-value>
+      </method>
+      <method name="filter"
+              c:identifier="gtk_file_filter_filter"
+              doc="about a file.
+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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter_info" transfer-ownership="none">
+            <type name="FileFilterInfo" c:type="GtkFileFilterInfo*"/>
+          </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="boolean" 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="any" 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="FileSelection"
+           c:type="GtkFileSelection"
+           parent="Dialog"
+           glib:type-name="GtkFileSelection"
+           glib:get-type="gtk_file_selection_get_type"
+           glib:type-struct="FileSelectionClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_file_selection_new">
+        <return-value transfer-ownership="full">
+          <type name="FileSelection" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_filename"
+              c:identifier="gtk_file_selection_set_filename"
+              doc="Sets a default path for the file requestor. If @filename includes a
+directory path, then the requestor will open with that path as its
+current working directory.
+This has the consequence that in order to open the requestor with a
+working directory and an empty filename, @filename must have a trailing
+directory separator.
+The encoding of @filename is preferred GLib file name encoding, which
+may not be UTF-8. See g_filename_from_utf8().">
+        <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>
+      </method>
+      <method name="get_filename"
+              c:identifier="gtk_file_selection_get_filename"
+              doc="This function returns the selected filename in the GLib file name
+encoding. To convert to UTF-8, call g_filename_to_utf8(). The
+returned string points to a statically allocated buffer and should
+be copied if you plan to keep it around.
+If no file is selected then the selected directory path is returned.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="complete" c:identifier="gtk_file_selection_complete">
+        <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="show_fileop_buttons"
+              c:identifier="gtk_file_selection_show_fileop_buttons">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="hide_fileop_buttons"
+              c:identifier="gtk_file_selection_hide_fileop_buttons">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_selections"
+              c:identifier="gtk_file_selection_get_selections"
+              doc="Retrieves the list of file selections the user has made in the dialog box.
+This function is intended for use when the user can select multiple files
+in the file list.
+The filenames are in the GLib file name encoding. To convert to
+UTF-8, call g_filename_to_utf8() on each string.
+g_strfreev() to free it.">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="set_select_multiple"
+              c:identifier="gtk_file_selection_set_select_multiple"
+              doc="files in the file list.
+Sets whether the user is allowed to select multiple files in the file list.
+Use gtk_file_selection_get_selections () to get the list of selected files.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="select_multiple" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_select_multiple"
+              c:identifier="gtk_file_selection_get_select_multiple"
+              doc="Determines whether or not the user is allowed to select multiple files in
+the file list. See gtk_file_selection_set_select_multiple().
+file list">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="filename" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="select-multiple" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="show-fileops" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Dialog" c:type="GtkDialog"/>
+      </field>
+      <field name="dir_list">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="file_list">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="selection_entry">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="selection_text">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="main_vbox">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="ok_button">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="cancel_button">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="help_button">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="history_pulldown">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="history_menu">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="history_list">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="fileop_dialog">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="fileop_entry">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="fileop_file">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="cmpl_state">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="fileop_c_dir">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="fileop_del_file">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="fileop_ren_file">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="button_area">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="action_area">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="selected_names">
+        <type name="GLib.PtrArray" c:type="GPtrArray*"/>
+      </field>
+      <field name="last_selected">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </class>
+    <record name="FileSelectionClass"
+            c:type="GtkFileSelectionClass"
+            glib:is-gtype-struct-for="FileSelection">
+      <field name="parent_class">
+        <type name="DialogClass" c:type="GtkDialogClass"/>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="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"/>
+      <constructor name="new" c:identifier="gtk_fixed_new">
+        <return-value transfer-ownership="full">
+          <type name="Fixed" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <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="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <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="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_has_window"
+              c:identifier="gtk_fixed_set_has_window"
+              doc="Sets whether a #GtkFixed widget is created with a separate
+#GdkWindow for @widget-&gt;window or not. (By default, it will be
+created with no separate #GdkWindow). This function must be called
+while the #GtkFixed is not realized, for instance, immediately after the
+window is created.
+This function was added to provide an easy migration path for
+older applications which may expect #GtkFixed to have a separate window."
+              deprecated="Use gtk_widget_set_has_window() instead."
+              deprecated-version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="has_window" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_has_window"
+              c:identifier="gtk_fixed_get_has_window"
+              doc="Gets whether the #GtkFixed has its own #GdkWindow.
+See gtk_fixed_set_has_window()."
+              deprecated="Use gtk_widget_get_has_window() instead."
+              deprecated-version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="children">
+        <type name="GLib.List" c:type="GList*"/>
+      </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="int" c:type="gint"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="int" 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>
+    <class name="FontButton"
+           c:type="GtkFontButton"
+           parent="Button"
+           glib:type-name="GtkFontButton"
+           glib:get-type="gtk_font_button_get_type"
+           glib:type-struct="FontButtonClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_font_button_new"
+                   doc="Creates a new font picker widget."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="FontButton" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_font"
+                   c:identifier="gtk_font_button_new_with_font"
+                   doc="Creates a new font picker widget."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="FontButton" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="fontname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_title"
+              c:identifier="gtk_font_button_get_title"
+              doc="Retrieves the title of the font selection dialog."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_title"
+              c:identifier="gtk_font_button_set_title"
+              doc="Sets the title for the font selection dialog."
+              version="2.4">
+        <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="get_use_font"
+              c:identifier="gtk_font_button_get_use_font"
+              doc="Returns whether the selected font is used in the label."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_use_font"
+              c:identifier="gtk_font_button_set_use_font"
+              doc="If @use_font is %TRUE, the font name will be written using the selected font."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_font" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_size"
+              c:identifier="gtk_font_button_get_use_size"
+              doc="Returns whether the selected size is used in the label."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_use_size"
+              c:identifier="gtk_font_button_set_use_size"
+              doc="If @use_size is %TRUE, the font name will be written using the selected size."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_size" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font_name"
+              c:identifier="gtk_font_button_get_font_name"
+              doc="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&apos;re interested in peeking certain values (family name,
+style, size, weight) just query these properties from the
+#PangoFontDescription object."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_font_name"
+              c:identifier="gtk_font_button_set_font_name"
+              doc="Sets or updates the currently-displayed font in font picker dialog.
+font selection dialog exists, otherwise %FALSE."
+              version="2.4">
+        <return-value transfer-ownership="none" doc="if the">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fontname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_show_style"
+              c:identifier="gtk_font_button_get_show_style"
+              doc="Returns whether the name of the font style will be shown in the label."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_show_style"
+              c:identifier="gtk_font_button_set_show_style"
+              doc="If @show_style is %TRUE, the font style will be displayed along with name of the selected font."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_style" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_show_size"
+              c:identifier="gtk_font_button_get_show_size"
+              doc="Returns whether the font size will be shown in the label."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_show_size"
+              c:identifier="gtk_font_button_set_show_size"
+              doc="If @show_size is %TRUE, the font size will be displayed along with the name of the selected font."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_size" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="font-name"
+                version="2.4"
+                writable="1"
+                doc="The name of the currently selected font.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="show-size"
+                version="2.4"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="show-style"
+                version="2.4"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="title"
+                version="2.4"
+                writable="1"
+                doc="The title of the font selection dialog.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="use-font"
+                version="2.4"
+                writable="1"
+                doc="If this property is set to %TRUE, the label will be drawn
+in the selected font.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="use-size"
+                version="2.4"
+                writable="1"
+                doc="If this property is set to %TRUE, the label will be drawn
+with the selected font size.">
+        <type name="boolean" c:type="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"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="FontButtonPrivate" c:type="GtkFontButtonPrivate">
+    </record>
+    <class name="FontSelection"
+           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"/>
+      <constructor name="new"
+                   c:identifier="gtk_font_selection_new"
+                   doc="Creates a new #GtkFontSelection.">
+        <return-value transfer-ownership="full">
+          <type name="FontSelection" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_family_list"
+              c:identifier="gtk_font_selection_get_family_list"
+              doc="This returns the #GtkTreeView that lists font families, for
+example, &apos;Sans&apos;, &apos;Serif&apos;, etc."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_face_list"
+              c:identifier="gtk_font_selection_get_face_list"
+              doc="This returns the #GtkTreeView which lists all styles available for
+the selected font. For example, &apos;Regular&apos;, &apos;Bold&apos;, etc."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_size_entry"
+              c:identifier="gtk_font_selection_get_size_entry"
+              doc="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."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_size_list"
+              c:identifier="gtk_font_selection_get_size_list"
+              doc="This returns the #GtkTreeeView used to list font sizes."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_preview_entry"
+              c:identifier="gtk_font_selection_get_preview_entry"
+              doc="This returns the #GtkEntry used to display the font as a preview."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_family"
+              c:identifier="gtk_font_selection_get_family"
+              doc="Gets the #PangoFontFamily representing the selected font family.
+family. Font families are a collection of font faces. The
+returned object is owned by @fontsel and must not be modified
+or freed."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Pango.FontFamily" c:type="PangoFontFamily*"/>
+        </return-value>
+      </method>
+      <method name="get_face"
+              c:identifier="gtk_font_selection_get_face"
+              doc="Gets the #PangoFontFace representing the selected font group
+details (i.e. family, slant, weight, width, etc).
+group details. The returned object is owned by @fontsel and
+must not be modified or freed."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Pango.FontFace" c:type="PangoFontFace*"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="gtk_font_selection_get_size"
+              doc="The selected font size.
+or -1 if no font size is selected."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_font_name"
+              c:identifier="gtk_font_selection_get_font_name"
+              doc="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, &quot;Helvetica Italic Bold 12&quot; could be normalized to
+&quot;Helvetica Bold Italic 12&quot;. 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().">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_font"
+              c:identifier="gtk_font_selection_get_font"
+              doc="Gets the currently-selected font."
+              deprecated="Use gtk_font_selection_get_font_name() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Font" c:type="GdkFont*"/>
+        </return-value>
+      </method>
+      <method name="set_font_name"
+              c:identifier="gtk_font_selection_set_font_name"
+              doc="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&apos;t belong to a particular
+screen yet.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fontname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preview_text"
+              c:identifier="gtk_font_selection_get_preview_text"
+              doc="Gets the text displayed in the preview area.
+This string is owned by the widget and should not be
+modified or freed">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_preview_text"
+              c:identifier="gtk_font_selection_set_preview_text"
+              doc="Sets the text displayed in the preview area.
+The @text is used to show how the selected font looks.">
+        <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>
+        </parameters>
+      </method>
+      <property name="font">
+        <type name="Gdk.Font" c:type="GdkFont"/>
+      </property>
+      <property name="font-name" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="preview-text" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <field name="parent_instance">
+        <type name="VBox" c:type="GtkVBox"/>
+      </field>
+      <field name="font_entry">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="family_list">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="font_style_entry">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="face_list">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="size_entry">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="size_list">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="pixels_button">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="points_button">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="filter_button">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="preview_entry">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="family">
+        <type name="Pango.FontFamily" c:type="PangoFontFamily*"/>
+      </field>
+      <field name="face">
+        <type name="Pango.FontFace" c:type="PangoFontFace*"/>
+      </field>
+      <field name="size">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="font">
+        <type name="Gdk.Font" c:type="GdkFont*"/>
+      </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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="FontSelectionDialog"
+           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"/>
+      <constructor name="new"
+                   c:identifier="gtk_font_selection_dialog_new"
+                   doc="Creates a new #GtkFontSelectionDialog.">
+        <return-value transfer-ownership="full">
+          <type name="FontSelectionDialog" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_ok_button"
+              c:identifier="gtk_font_selection_dialog_get_ok_button"
+              doc="Gets the &apos;OK&apos; button."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_apply_button"
+              c:identifier="gtk_font_selection_dialog_get_apply_button"
+              doc="Obtains a button. The button doesn&apos;t have any function."
+              version="2.14"
+              deprecated="Don&apos;t use this function."
+              deprecated-version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_cancel_button"
+              c:identifier="gtk_font_selection_dialog_get_cancel_button"
+              doc="Gets the &apos;Cancel&apos; button."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_font_name"
+              c:identifier="gtk_font_selection_dialog_get_font_name"
+              doc="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, &quot;Helvetica Italic Bold 12&quot; could be normalized
+to &quot;Helvetica Bold Italic 12&quot;.  Use pango_font_description_equal()
+if you want to compare two font descriptions.
+font is selected. You must free this string with g_free().">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_font"
+              c:identifier="gtk_font_selection_dialog_get_font"
+              doc="Gets the currently-selected font.
+currently selected font in the dialog, or %NULL if no font is selected"
+              deprecated="Use gtk_font_selection_dialog_get_font_name() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Font" c:type="GdkFont*"/>
+        </return-value>
+      </method>
+      <method name="set_font_name"
+              c:identifier="gtk_font_selection_dialog_set_font_name"
+              doc="Sets the currently selected font.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="fontname" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preview_text"
+              c:identifier="gtk_font_selection_dialog_get_preview_text"
+              doc="Gets the text displayed in the preview area.
+This string is owned by the widget and should not be
+modified or freed">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_preview_text"
+              c:identifier="gtk_font_selection_dialog_set_preview_text"
+              doc="Sets the text displayed in the preview area.">
+        <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>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="Dialog" c:type="GtkDialog"/>
+      </field>
+      <field name="fontsel">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="main_vbox">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="action_area">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="ok_button">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="apply_button">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="cancel_button">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="dialog_width">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="auto_resize">
+        <type name="boolean" c:type="gboolean"/>
+      </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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="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"/>
+      <constructor name="new"
+                   c:identifier="gtk_frame_new"
+                   doc="Creates a new #GtkFrame, with optional label @label.
+If @label is %NULL, the label is omitted.">
+        <return-value transfer-ownership="full">
+          <type name="Frame" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <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="set_label"
+              c:identifier="gtk_frame_set_label"
+              doc="Sets the text of the label. If @label is %NULL,
+the current label is removed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the text to use as the label of the frame">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_label"
+              c:identifier="gtk_frame_get_label"
+              doc="If the frame&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_label_widget"
+              c:identifier="gtk_frame_set_label_widget"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label_widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_label_widget"
+              c:identifier="gtk_frame_get_label_widget"
+              doc="Retrieves the label widget for the frame. See
+gtk_frame_set_label_widget().">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_label_align"
+              c:identifier="gtk_frame_set_label_align"
+              doc="of the widget. A value of 0.0 represents left alignment;
+1.0 represents right alignment.
+the frame; 1.0 aligns above the frame. If the values are exactly
+0.0 or 1.0 the gap in the frame won&apos;t be painted because the label
+will be completely above or below the frame.
+Sets the alignment of the frame widget&apos;s label. The
+default values for a newly created frame are 0.0 and 0.5.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_label_align"
+              c:identifier="gtk_frame_get_label_align"
+              doc="Retrieves the X and Y alignment of the frame&apos;s label. See
+gtk_frame_set_label_align().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store X alignment of frame&apos;s label, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="yalign"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store X alignment of frame&apos;s label, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_shadow_type"
+              c:identifier="gtk_frame_set_shadow_type"
+              doc="Sets the shadow type for @frame.">
+        <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="get_shadow_type"
+              c:identifier="gtk_frame_get_shadow_type"
+              doc="Retrieves the shadow type of the frame. See
+gtk_frame_set_shadow_type().">
+        <return-value transfer-ownership="full">
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </return-value>
+      </method>
+      <property name="label" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="label-widget" writable="1">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <property name="label-xalign" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="label-yalign" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="shadow" writable="1">
+        <type name="ShadowType" c:type="GtkShadowType"/>
+      </property>
+      <property name="shadow-type" writable="1">
+        <type name="ShadowType" c:type="GtkShadowType"/>
+      </property>
+      <field name="bin">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+      <field name="label_widget">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="shadow_type">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="label_xalign">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="label_yalign">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="child_allocation">
+        <type name="Allocation" c:type="GtkAllocation"/>
+      </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"
+                  c:type="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>
+    <callback name="Function" c:type="GtkFunction">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="GammaCurve"
+           c:type="GtkGammaCurve"
+           parent="VBox"
+           glib:type-name="GtkGammaCurve"
+           glib:get-type="gtk_gamma_curve_get_type"
+           glib:type-struct="GammaCurveClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <constructor name="new" c:identifier="gtk_gamma_curve_new">
+        <return-value transfer-ownership="full">
+          <type name="GammaCurve" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <field name="vbox">
+        <type name="VBox" c:type="GtkVBox"/>
+      </field>
+      <field name="table">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="curve">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="button">
+        <array zero-terminated="0" c:type="GtkWidget*" fixed-size="5">
+          <type name="Widget"/>
+        </array>
+      </field>
+      <field name="gamma">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="gamma_dialog">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="gamma_text">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+    </class>
+    <record name="GammaCurveClass"
+            c:type="GtkGammaCurveClass"
+            glib:is-gtype-struct-for="GammaCurve">
+      <field name="parent_class">
+        <type name="VBoxClass" c:type="GtkVBoxClass"/>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="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"/>
+      <constructor name="new" c:identifier="gtk_hbox_new">
+        <return-value transfer-ownership="full">
+          <type name="HBox" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="int" 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: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"/>
+      <constructor name="new" c:identifier="gtk_hbutton_box_new">
+        <return-value transfer-ownership="full">
+          <type name="HButtonBox" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <function name="get_spacing_default"
+                c:identifier="gtk_hbutton_box_get_spacing_default">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </function>
+      <function name="get_layout_default"
+                c:identifier="gtk_hbutton_box_get_layout_default">
+        <return-value transfer-ownership="full">
+          <type name="ButtonBoxStyle" c:type="GtkButtonBoxStyle"/>
+        </return-value>
+      </function>
+      <function name="set_spacing_default"
+                c:identifier="gtk_hbutton_box_set_spacing_default">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="set_layout_default"
+                c:identifier="gtk_hbutton_box_set_layout_default">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layout" transfer-ownership="none">
+            <type name="ButtonBoxStyle" c:type="GtkButtonBoxStyle"/>
+          </parameter>
+        </parameters>
+      </function>
+      <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: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"/>
+      <constructor name="new" c:identifier="gtk_hpaned_new">
+        <return-value transfer-ownership="full">
+          <type name="HPaned" 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: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"/>
+      <constructor name="new" c:identifier="gtk_hruler_new">
+        <return-value transfer-ownership="full">
+          <type name="HRuler" 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: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"/>
+      <constructor name="new"
+                   c:identifier="gtk_hsv_new"
+                   doc="Creates a new HSV color selector."
+                   version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="HSV" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <function name="to_rgb"
+                c:identifier="gtk_hsv_to_rgb"
+                doc="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."
+                version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="h" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="s" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="v" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="r" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="g" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="b" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="set_color"
+              c:identifier="gtk_hsv_set_color"
+              doc="Sets the current color in an HSV color selector.
+Color component values must be in the [0.0, 1.0] range."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="h" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="s" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="v" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_color"
+              c:identifier="gtk_hsv_get_color"
+              doc="Queries the current color in an HSV color selector.
+Returned values will be in the [0.0, 1.0] range."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="h" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="s" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="v" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_metrics"
+              c:identifier="gtk_hsv_set_metrics"
+              doc="Sets the size and ring width of an HSV color selector."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="ring_width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_metrics"
+              c:identifier="gtk_hsv_get_metrics"
+              doc="Queries the size and ring width of an HSV color selector."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="ring_width"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_adjusting"
+              c:identifier="gtk_hsv_is_adjusting"
+              doc="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."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="priv">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <glib:signal name="changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="move">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="DirectionType" c:type="GtkDirectionType"/>
+          </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" c:type="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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="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"/>
+      <constructor name="new" c:identifier="gtk_hscale_new">
+        <return-value transfer-ownership="full">
+          <type name="HScale" 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="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&apos;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.">
+        <return-value transfer-ownership="full">
+          <type name="HScale" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="min" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="max" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="step"
+                     transfer-ownership="none"
+                     doc="used with keyboard shortcuts">
+            <type name="double" 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: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"/>
+      <constructor name="new"
+                   c:identifier="gtk_hscrollbar_new"
+                   doc="Creates a new horizontal scrollbar.">
+        <return-value transfer-ownership="full">
+          <type name="HScrollbar" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the #GtkAdjustment to use, or %NULL to create a new adjustment">
+            <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: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"/>
+      <constructor name="new" c:identifier="gtk_hseparator_new">
+        <return-value transfer-ownership="full">
+          <type name="HSeparator" 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: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"/>
+      <constructor name="new" c:identifier="gtk_handle_box_new">
+        <return-value transfer-ownership="full">
+          <type name="HandleBox" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <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="get_shadow_type"
+              c:identifier="gtk_handle_box_get_shadow_type"
+              doc="Gets the type of shadow drawn around the handle box. See
+gtk_handle_box_set_shadow_type().">
+        <return-value transfer-ownership="full">
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </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="get_handle_position"
+              c:identifier="gtk_handle_box_get_handle_position"
+              doc="Gets the handle position of the handle box. See
+gtk_handle_box_set_handle_position().">
+        <return-value transfer-ownership="full">
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </return-value>
+      </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>
+      <method name="get_snap_edge"
+              c:identifier="gtk_handle_box_get_snap_edge"
+              doc="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.">
+        <return-value transfer-ownership="full" doc="1 if this">
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </return-value>
+      </method>
+      <method name="get_child_detached"
+              c:identifier="gtk_handle_box_get_child_detached"
+              doc="Whether the handlebox&apos;s child is currently detached."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="child-detached">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="handle-position" writable="1">
+        <type name="PositionType" c:type="GtkPositionType"/>
+      </property>
+      <property name="shadow" writable="1">
+        <type name="ShadowType" c:type="GtkShadowType"/>
+      </property>
+      <property name="shadow-type" writable="1">
+        <type name="ShadowType" c:type="GtkShadowType"/>
+      </property>
+      <property name="snap-edge" writable="1">
+        <type name="PositionType" c:type="GtkPositionType"/>
+      </property>
+      <property name="snap-edge-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="bin">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+      <field name="bin_window">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="float_window">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="shadow_type">
+        <type name="ShadowType" c:type="GtkShadowType"/>
+      </field>
+      <field name="handle_position" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="float_window_mapped" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="child_detached" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="in_drag" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="shrink_on_detach" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="snap_edge" bits="3">
+        <type name="int" c:type="signed"/>
+      </field>
+      <field name="deskoff_x">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="deskoff_y">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="attach_allocation">
+        <type name="Allocation" c:type="GtkAllocation"/>
+      </field>
+      <field name="float_allocation">
+        <type name="Allocation" c:type="GtkAllocation"/>
+      </field>
+      <glib:signal name="child-attached">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="child-detached">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget"/>
+          </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" c:type="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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="IMContext"
+           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="set_client_window" invoker="set_client_window">
+        <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>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_preedit_string" invoker="get_preedit_string">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="attrs" transfer-ownership="none">
+            <type name="Pango.AttrList" c:type="PangoAttrList**"/>
+          </parameter>
+          <parameter name="cursor_pos"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="filter_keypress" invoker="filter_keypress">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="focus_in" invoker="focus_in">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="focus_out" invoker="focus_out">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="reset" invoker="reset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_cursor_location" invoker="set_cursor_location">
+        <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>
+      <virtual-method name="set_use_preedit" invoker="set_use_preedit">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_preedit" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_surrounding" invoker="set_surrounding">
+        <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="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="cursor_index" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_surrounding" invoker="get_surrounding">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="cursor_index"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_client_window"
+              c:identifier="gtk_im_context_set_client_window"
+              doc="that the previous client window no longer exists.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the client window. This may be %NULL to indicate">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_preedit_string"
+              c:identifier="gtk_im_context_get_preedit_string"
+              doc="string retrieved must be freed with g_free ().
+When you are done with this list, you must
+unreference it with pango_attr_list_unref().
+within the preedit string.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="attrs" transfer-ownership="none">
+            <type name="Pango.AttrList" c:type="PangoAttrList**"/>
+          </parameter>
+          <parameter name="cursor_pos" transfer-ownership="none">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="filter_keypress"
+              c:identifier="gtk_im_context_filter_keypress"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="focus_in"
+              c:identifier="gtk_im_context_focus_in"
+              doc="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.">
+        <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="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="reset"
+              c:identifier="gtk_im_context_reset"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_cursor_location"
+              c:identifier="gtk_im_context_set_cursor_location"
+              doc="Notify the input method that a change in cursor
+position has been made. The location is relative to the client
+window.">
+        <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>
+      </method>
+      <method name="set_use_preedit"
+              c:identifier="gtk_im_context_set_use_preedit"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_preedit" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_surrounding"
+              c:identifier="gtk_im_context_set_surrounding"
+              doc="the preedit string should not be included within
+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.">
+        <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="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="cursor_index" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_surrounding"
+              c:identifier="gtk_im_context_get_surrounding"
+              doc="holding context around the insertion point.
+If the function returns %TRUE, then you must free
+the result stored in this location with g_free().
+within @text.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="cursor_index"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_surrounding"
+              c:identifier="gtk_im_context_delete_surrounding"
+              doc="a negative value means start before the cursor.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="n_chars" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <glib:signal name="commit"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="str"
+                     transfer-ownership="none"
+                     doc="entered by the user">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="delete-surrounding"
+                   doc="to be deleted. A negative value indicates a position before
+the cursor.
+The ::delete-surrounding signal is emitted when the input method
+needs to delete all or part of the context surrounding the cursor.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="n_chars" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="preedit-changed"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="preedit-end"
+                   doc="The ::preedit-end signal is emitted when a preediting sequence
+has been completed or canceled.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="preedit-start"
+                   doc="The ::preedit-start signal is emitted when a new preediting sequence
+starts.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="retrieve-surrounding"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="IMContextClass"
+            c:type="GtkIMContextClass"
+            glib:is-gtype-struct-for="IMContext"
+            doc="signal.
+#GtkIMContext::retrieve-surrounding signal.
+#GtkIMContext::delete-surrounding signal.
+input window where the entered text will appear changes. Override this to
+keep track of the current input window, for instance for the purpose of
+positioning a status display of your input method.
+retrieve the text currently being preedited for display at the cursor
+position. Any input method which composes complex characters or any
+other compositions from multiple sequential key presses should override
+this method to provide feedback.
+key press or release event. Every non-trivial input method needs to
+override this in order to implement the mapping from key events to text.
+A return value of %TRUE indicates to the caller that the event was
+consumed by the input method. In that case, the #GtkIMContext::commit
+signal should be emitted upon completion of a key sequence to pass the
+resulting text back to the input widget. Alternatively, %FALSE may be
+returned to indicate that the event wasn&apos;t handled by the input method.
+If a builtin mapping exists for the key, it is used to produce a
+character.
+has gained focus. May be overridden to keep track of the current focus.
+has lost focus. May be overridden to keep track of the current focus.
+change in cursor position. An input method that implements preediting
+should override this method to clear the preedit state on reset.
+to inform the input method of the current cursor location relative to
+the client window. May be overridden to implement the display of popup
+windows at the cursor position.
+the use of the preedit string. Override this to display feedback by some
+other means if turned off.
+to signal #GtkIMContext::retrieve-surrounding to update the input
+method&apos;s idea of the context around the cursor. It is not necessary to
+override this method even with input methods which implement
+context-dependent behavior. The base implementation is sufficient for
+gtk_im_context_get_surrounding() to work.
+the context around the cursor location. It is not necessary to override
+this method even with input methods which implement context-dependent
+behavior. The base implementation emits
+#GtkIMContext::retrieve-surrounding and records the context received
+by the subsequent invocation of @get_surrounding.">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GtkObjectClass"/>
+      </field>
+      <field name="preedit_start">
+        <callback name="preedit_start" c:type="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" c:type="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" c:type="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" c:type="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" c:type="retrieve_surrounding">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="delete_surrounding">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="n_chars" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_client_window">
+        <callback name="set_client_window" c:type="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">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_preedit_string">
+        <callback name="get_preedit_string" c:type="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">
+              <array c:type="gchar**">
+                <type name="utf8"/>
+              </array>
+            </parameter>
+            <parameter name="attrs" transfer-ownership="none">
+              <type name="Pango.AttrList" c:type="PangoAttrList**"/>
+            </parameter>
+            <parameter name="cursor_pos"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="filter_keypress">
+        <callback name="filter_keypress" c:type="filter_keypress">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="focus_in">
+        <callback name="focus_in" c:type="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" c:type="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" c:type="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" c:type="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">
+              <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_use_preedit">
+        <callback name="set_use_preedit" c:type="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">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_surrounding">
+        <callback name="set_surrounding" c:type="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">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="len" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="cursor_index" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_surrounding">
+        <callback name="get_surrounding" c:type="get_surrounding">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <array c:type="gchar**">
+                <type name="utf8"/>
+              </array>
+            </parameter>
+            <parameter name="cursor_index"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved5">
+        <callback name="gtk_reserved5" c:type="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved6">
+        <callback name="gtk_reserved6" c:type="_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="should be the default. The asterisk &quot;*&quot; sets the default for all locales.
+Bookkeeping information about a loadable input method.">
+      <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: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="IMContextSimple" c:type="GtkIMContext*"/>
+        </return-value>
+      </constructor>
+      <method name="add_table"
+              c:identifier="gtk_im_context_simple_add_table"
+              doc="(cannot be greater than #GTK_MAX_COMPOSE_LEN)
+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.)">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" direction="out" transfer-ownership="full">
+            <type name="uint16" c:type="guint16*"/>
+          </parameter>
+          <parameter name="max_seq_len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="n_seqs" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="IMContext" c:type="GtkIMContext"/>
+      </field>
+      <field name="tables">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="compose_buffer">
+        <array zero-terminated="0" c:type="guint" fixed-size="8">
+          <type name="uint"/>
+        </array>
+      </field>
+      <field name="tentative_match">
+        <type name="GLib.unichar" c:type="gunichar"/>
+      </field>
+      <field name="tentative_match_len">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="in_hex_sequence" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="modifiers_dropped" bits="1">
+        <type name="uint" c:type="guint"/>
+      </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>
+    <class name="IMMulticontext"
+           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="Creates a new #GtkIMMulticontext.">
+        <return-value transfer-ownership="full">
+          <type name="IMMulticontext" c:type="GtkIMContext*"/>
+        </return-value>
+      </constructor>
+      <method name="append_menuitems"
+              c:identifier="gtk_im_multicontext_append_menuitems"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="menushell" transfer-ownership="none">
+            <type name="MenuShell" c:type="GtkMenuShell*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_context_id"
+              c:identifier="gtk_im_multicontext_get_context_id"
+              doc="Gets the id of the currently active slave of the @context."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="set_context_id"
+              c:identifier="gtk_im_multicontext_set_context_id"
+              doc="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."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="context_id" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="IMContext" c:type="GtkIMContext"/>
+      </field>
+      <field name="slave">
+        <type name="IMContext" c:type="GtkIMContext*"/>
+      </field>
+      <field name="priv">
+        <type name="IMMulticontextPrivate" c:type="GtkIMMulticontextPrivate*"/>
+      </field>
+      <field name="context_id">
+        <type name="utf8" c:type="gchar*"/>
+      </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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="IMMulticontextPrivate" c:type="GtkIMMulticontextPrivate">
+    </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="int"/>
+    </constant>
+    <constant name="INTERFACE_AGE" value="1">
+      <type name="int"/>
+    </constant>
+    <class name="IconFactory"
+           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="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&apos;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.">
+        <return-value transfer-ownership="full">
+          <type name="IconFactory" c:type="GtkIconFactory*"/>
+        </return-value>
+      </constructor>
+      <function name="lookup_default"
+                c:identifier="gtk_icon_factory_lookup_default"
+                doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="IconSet" c:type="GtkIconSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="add"
+              c:identifier="gtk_icon_factory_add"
+              doc="Adds the given @icon_set to the icon factory, under the name
+e.g. &quot;myapp-whatever-icon&quot;.  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 &quot;myapp-whatever-icon&quot;) to
+override your application&apos;s default icons. If an icon already
+existed in @factory for @stock_id, it is unreferenced and replaced
+with the new @icon_set.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="icon_set" transfer-ownership="none">
+            <type name="IconSet" c:type="GtkIconSet*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup"
+              c:identifier="gtk_icon_factory_lookup"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="IconSet" c:type="GtkIconSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_default"
+              c:identifier="gtk_icon_factory_add_default"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="remove_default"
+              c:identifier="gtk_icon_factory_remove_default"
+              doc="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.">
+        <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="icons">
+        <type name="GLib.HashTable" c:type="GHashTable*"/>
+      </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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="IconInfo"
+            c:type="GtkIconInfo"
+            glib:type-name="GtkIconInfo"
+            glib:get-type="gtk_icon_info_get_type">
+      <constructor name="new_for_pixbuf"
+                   c:identifier="gtk_icon_info_new_for_pixbuf"
+                   doc="Creates a #GtkIconInfo for a #GdkPixbuf."
+                   version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="IconInfo" c:type="GtkIconInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_theme" transfer-ownership="none">
+            <type name="IconTheme" c:type="GtkIconTheme*"/>
+          </parameter>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="gtk_icon_info_copy"
+              doc="Make a copy of a #GtkIconInfo."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="IconInfo" c:type="GtkIconInfo*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gtk_icon_info_free"
+              doc="Free a #GtkIconInfo and associated information"
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_base_size"
+              c:identifier="gtk_icon_info_get_base_size"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_filename"
+              c:identifier="gtk_icon_info_get_filename"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_builtin_pixbuf"
+              c:identifier="gtk_icon_info_get_builtin_pixbuf"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none"
+                      doc="the built-in image pixbuf, or %NULL. No">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="load_icon"
+              c:identifier="gtk_icon_info_load_icon"
+              doc="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.
+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."
+              version="2.4"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="set_raw_coordinates"
+              c:identifier="gtk_icon_info_set_raw_coordinates"
+              doc="and attached points should be returned in their original
+(unscaled) form.
+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 &apos;.svg&apos;.
+This function is provided primarily to allow compatibility wrappers
+for older API&apos;s, and is not expected to be useful for applications."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="raw_coordinates" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_embedded_rect"
+              c:identifier="gtk_icon_info_get_embedded_rect"
+              doc="rectangle coordinates; coordinates are only stored
+when this function returns %TRUE.
+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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="rectangle" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attach_points"
+              c:identifier="gtk_icon_info_get_attach_points"
+              doc="free the array of points with g_free().
+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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="points"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store pointer to an array of points, or %NULL">
+            <array length="2" c:type="GdkPoint**">
+              <type name="Gdk.Point"/>
+            </array>
+          </parameter>
+          <parameter name="n_points"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the number of points in @points, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_display_name"
+              c:identifier="gtk_icon_info_get_display_name"
+              doc="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&apos;t have a specified display name. This value
+is owned @icon_info and must not be modified or free."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <bitfield name="IconLookupFlags"
+              doc="supports them. Cannot be used together with %GTK_ICON_LOOKUP_FORCE_SVG.
+doesn&apos;t support them.
+Cannot be used together with %GTK_ICON_LOOKUP_NO_SVG.
+gtk_icon_theme_lookup_icon() includes builtin icons
+as well as files. For a builtin icon, gtk_icon_info_get_filename()
+returns %NULL and you need to call gtk_icon_info_get_builtin_pixbuf().
+characters before looking at inherited themes. For more general
+fallback, see gtk_icon_theme_choose_icon(). Since 2.12.
+requested size. Since 2.14.
+Used to specify options for gtk_icon_theme_lookup_icon()"
+              glib:type-name="GtkIconLookupFlags"
+              glib:get-type="gtk_icon_lookup_flags_get_type"
+              c:type="GtkIconLookupFlags">
+      <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">
+      <constructor name="new"
+                   c:identifier="gtk_icon_set_new"
+                   doc="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&apos;d use
+#GtkIconSet is to create application-specific icon sets to place in
+a #GtkIconFactory.">
+        <return-value transfer-ownership="full">
+          <type name="IconSet" c:type="GtkIconSet*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_pixbuf"
+                   c:identifier="gtk_icon_set_new_from_pixbuf"
+                   doc="Creates a new #GtkIconSet with @pixbuf as the default/fallback
+source image. If you don&apos;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.">
+        <return-value transfer-ownership="full">
+          <type name="IconSet" c:type="GtkIconSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="ref"
+              c:identifier="gtk_icon_set_ref"
+              doc="Increments the reference count on @icon_set.">
+        <return-value transfer-ownership="full">
+          <type name="IconSet" c:type="GtkIconSet*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gtk_icon_set_unref"
+              doc="Decrements the reference count on @icon_set, and frees memory
+if the reference count reaches 0.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="gtk_icon_set_copy"
+              doc="Copies @icon_set by value.">
+        <return-value transfer-ownership="full">
+          <type name="IconSet" c:type="GtkIconSet*"/>
+        </return-value>
+      </method>
+      <method name="render_icon"
+              c:identifier="gtk_icon_set_render_icon"
+              doc="means render at the size of the source and don&apos;t scale.
+The only use that is typically made of this
+is to determine the appropriate #GdkScreen.
+Note that passing a detail of anything but %NULL
+will disable caching.
+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&apos;t be rendered
+(perhaps because an image file fails to load), a default &quot;missing
+image&quot; icon will be returned instead.">
+        <return-value transfer-ownership="full">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="style"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkStyle associated with @widget, or %NULL">
+            <type name="Style" c:type="GtkStyle*"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="TextDirection" c:type="GtkTextDirection"/>
+          </parameter>
+          <parameter name="state" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none" doc="1">
+            <type name="int" c:type="GtkIconSize"/>
+          </parameter>
+          <parameter name="widget"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="widget that will display the icon, or %NULL.">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="detail to pass to the theme engine, or %NULL.">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_source"
+              c:identifier="gtk_icon_set_add_source"
+              doc="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&quot; 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 &quot;default&quot; 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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <type name="IconSource" c:type="GtkIconSource*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sizes"
+              c:identifier="gtk_icon_set_get_sizes"
+              doc="for array of sizes
+Obtains a list of icon sizes this icon set can render. The returned
+array must be freed with g_free().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sizes"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="return location">
+            <array length="2" c:type="GtkIconSize**">
+              <type name="IconSize"/>
+            </array>
+          </parameter>
+          <parameter name="n_sizes" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </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">
+      <constructor name="new"
+                   c:identifier="gtk_icon_source_new"
+                   doc="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 &quot;the same&quot; logical concept in different states,
+different global text directions, and different sizes.
+So for example a web browser&apos;s &quot;Back to Previous Page&quot; 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&apos;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.">
+        <return-value transfer-ownership="full">
+          <type name="IconSource" c:type="GtkIconSource*"/>
+        </return-value>
+      </constructor>
+      <method name="copy"
+              c:identifier="gtk_icon_source_copy"
+              doc="Creates a copy of @source; mostly useful for language bindings.">
+        <return-value transfer-ownership="full">
+          <type name="IconSource" c:type="GtkIconSource*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gtk_icon_source_free"
+              doc="Frees a dynamically-allocated icon source, along with its
+filename, size, and pixbuf fields if those are not %NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_filename"
+              c:identifier="gtk_icon_source_set_filename"
+              doc="Sets the name of an image file to use as a base image when creating
+icon variants for #GtkIconSet. The filename must be absolute.">
+        <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>
+      </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="Sets a pixbuf to use as a base image when creating icon variants
+for #GtkIconSet.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_filename"
+              c:identifier="gtk_icon_source_get_filename"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_icon_name"
+              c:identifier="gtk_icon_source_get_icon_name"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_pixbuf"
+              c:identifier="gtk_icon_source_get_pixbuf"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="set_direction_wildcarded"
+              c:identifier="gtk_icon_source_set_direction_wildcarded"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_state_wildcarded"
+              c:identifier="gtk_icon_source_set_state_wildcarded"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size_wildcarded"
+              c:identifier="gtk_icon_source_set_size_wildcarded"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size_wildcarded"
+              c:identifier="gtk_icon_source_get_size_wildcarded"
+              doc="Gets the value set by gtk_icon_source_set_size_wildcarded().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_state_wildcarded"
+              c:identifier="gtk_icon_source_get_state_wildcarded"
+              doc="Gets the value set by gtk_icon_source_set_state_wildcarded().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_direction_wildcarded"
+              c:identifier="gtk_icon_source_get_direction_wildcarded"
+              doc="Gets the value set by gtk_icon_source_set_direction_wildcarded().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_direction"
+              c:identifier="gtk_icon_source_set_direction"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="TextDirection" c:type="GtkTextDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_state"
+              c:identifier="gtk_icon_source_set_state"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_size"
+              c:identifier="gtk_icon_source_set_size"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size"
+                     transfer-ownership="none"
+                     doc="icon size this source applies to">
+            <type name="int" c:type="GtkIconSize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_direction"
+              c:identifier="gtk_icon_source_get_direction"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="TextDirection" c:type="GtkTextDirection"/>
+        </return-value>
+      </method>
+      <method name="get_state"
+              c:identifier="gtk_icon_source_get_state"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="StateType" c:type="GtkStateType"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="gtk_icon_source_get_size"
+              doc="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.">
+        <return-value transfer-ownership="full"
+                      doc="icon size this source matches.">
+          <type name="int" c:type="GtkIconSize"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="IconTheme"
+           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"
+                   doc="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&apos;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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="IconTheme" c:type="GtkIconTheme*"/>
+        </return-value>
+      </constructor>
+      <function name="get_default"
+                c:identifier="gtk_icon_theme_get_default"
+                doc="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."
+                version="2.4">
+        <return-value transfer-ownership="none"
+                      doc="A unique #GtkIconTheme associated with">
+          <type name="IconTheme" c:type="GtkIconTheme*"/>
+        </return-value>
+      </function>
+      <function name="get_for_screen"
+                c:identifier="gtk_icon_theme_get_for_screen"
+                doc="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."
+                version="2.4">
+        <return-value transfer-ownership="none"
+                      doc="A unique #GtkIconTheme associated with">
+          <type name="IconTheme" c:type="GtkIconTheme*"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <type name="Gdk.Screen" c:type="GdkScreen*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="add_builtin_icon"
+                c:identifier="gtk_icon_theme_add_builtin_icon"
+                doc="images can be registered for the same icon name
+at different sizes.)
+for @icon_name.
+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+&apos;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()."
+                version="2.4">
+        <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>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="set_screen"
+              c:identifier="gtk_icon_theme_set_screen"
+              doc="Sets the screen for an icon theme; the screen is used
+to track the user&apos;s currently configured icon theme,
+which might be different for different screens."
+              version="2.4">
+        <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_search_path"
+              c:identifier="gtk_icon_theme_set_search_path"
+              doc="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&apos;s home directory.)
+In addition if an icon found isn&apos;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.)"
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="n_elements" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_search_path"
+              c:identifier="gtk_icon_theme_get_search_path"
+              doc="The stored value should be freed with g_strfreev().
+in @path, or %NULL
+Gets the current search path. See gtk_icon_theme_set_search_path()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store a list of icon theme path directories or %NULL">
+            <array length="2" c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="n_elements"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_search_path"
+              c:identifier="gtk_icon_theme_append_search_path"
+              doc="Appends a directory to the search path.
+See gtk_icon_theme_set_search_path()."
+              version="2.4">
+        <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="prepend_search_path"
+              c:identifier="gtk_icon_theme_prepend_search_path"
+              doc="Prepends a directory to the search path.
+See gtk_icon_theme_set_search_path()."
+              version="2.4">
+        <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="set_custom_theme"
+              c:identifier="gtk_icon_theme_set_custom_theme"
+              doc="or %NULL to unset a previously set custom theme
+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()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="theme_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_icon"
+              c:identifier="gtk_icon_theme_has_icon"
+              doc="Checks whether an icon theme includes an icon
+for a particular name.
+icon for @icon_name."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_sizes"
+              c:identifier="gtk_icon_theme_get_icon_sizes"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_icon"
+              c:identifier="gtk_icon_theme_lookup_icon"
+              doc="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&apos;t found. Free with
+gtk_icon_info_free()"
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="IconInfo" c:type="GtkIconInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" 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="flags" transfer-ownership="none">
+            <type name="IconLookupFlags" c:type="GtkIconLookupFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="choose_icon"
+              c:identifier="gtk_icon_theme_choose_icon"
+              doc="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&apos;t found. Free with
+gtk_icon_info_free()"
+              version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="IconInfo" c:type="GtkIconInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_names" transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="IconLookupFlags" c:type="GtkIconLookupFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_icon"
+              c:identifier="gtk_icon_theme_load_icon"
+              doc="exactly this size; see gtk_icon_info_load_icon().
+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.
+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&apos;t found."
+              version="2.4"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" 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="flags" transfer-ownership="none">
+            <type name="IconLookupFlags" c:type="GtkIconLookupFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_by_gicon"
+              c:identifier="gtk_icon_theme_lookup_by_gicon"
+              doc="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&apos;t found. Free with gtk_icon_info_free()"
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="IconInfo" c:type="GtkIconInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <type name="Gio.Icon" c:type="GIcon*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="IconLookupFlags" c:type="GtkIconLookupFlags"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_icons"
+              c:identifier="gtk_icon_theme_list_icons"
+              doc="or %NULL to list all icons.
+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 &quot;Applications&quot; and
+&quot;MimeTypes&quot;.
+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()."
+              version="2.4">
+        <return-value transfer-ownership="none"
+                      doc="a #GList list holding the names of all the">
+          <type name="GLib.List" c:type="GList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_contexts"
+              c:identifier="gtk_icon_theme_list_contexts"
+              doc="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()."
+              version="2.12">
+        <return-value transfer-ownership="full"
+                      doc="a #GList list holding the names of all the">
+          <type name="GLib.List" c:type="GList*">
+            <type name="utf8"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_example_icon_name"
+              c:identifier="gtk_icon_theme_get_example_icon_name"
+              doc="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()."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="rescan_if_needed"
+              c:identifier="gtk_icon_theme_rescan_if_needed"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </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="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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"
+                 doc="Error codes for GtkIconTheme operations."
+                 glib:type-name="GtkIconThemeError"
+                 glib:get-type="gtk_icon_theme_error_get_type"
+                 c:type="GtkIconThemeError"
+                 glib:error-quark="gtk_icon_theme_error_quark">
+      <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">
+    </record>
+    <class name="IconView"
+           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"/>
+      <constructor name="new"
+                   c:identifier="gtk_icon_view_new"
+                   doc="Creates a new #GtkIconView widget"
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="IconView" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_model"
+                   c:identifier="gtk_icon_view_new_with_model"
+                   doc="Creates a new #GtkIconView widget with the model @model."
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="IconView" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none">
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_model"
+              c:identifier="gtk_icon_view_set_model"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="model"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The model.">
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_model"
+              c:identifier="gtk_icon_view_get_model"
+              doc="Returns the model the #GtkIconView is based on.  Returns %NULL if the
+model is unset."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </return-value>
+      </method>
+      <method name="set_text_column"
+              c:identifier="gtk_icon_view_set_text_column"
+              doc="Sets the column with text for @icon_view to be @column. The text
+column must be of type #G_TYPE_STRING."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text_column"
+              c:identifier="gtk_icon_view_get_text_column"
+              doc="Returns the column with text for @icon_view."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_markup_column"
+              c:identifier="gtk_icon_view_set_markup_column"
+              doc="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()."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_markup_column"
+              c:identifier="gtk_icon_view_get_markup_column"
+              doc="Returns the column with markup text for @icon_view."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_pixbuf_column"
+              c:identifier="gtk_icon_view_set_pixbuf_column"
+              doc="Sets the column with pixbufs for @icon_view to be @column. The pixbuf
+column must be of type #GDK_TYPE_PIXBUF"
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixbuf_column"
+              c:identifier="gtk_icon_view_get_pixbuf_column"
+              doc="Returns the column with pixbufs for @icon_view."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_orientation"
+              c:identifier="gtk_icon_view_set_orientation"
+              doc="Sets the ::orientation property which determines whether the labels
+are drawn beside the icons instead of below."
+              version="2.6">
+        <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>
+        </parameters>
+      </method>
+      <method name="get_orientation"
+              c:identifier="gtk_icon_view_get_orientation"
+              doc="Returns the value of the ::orientation property which determines
+whether the labels are drawn beside the icons instead of below."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </return-value>
+      </method>
+      <method name="set_columns"
+              c:identifier="gtk_icon_view_set_columns"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="columns" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_columns"
+              c:identifier="gtk_icon_view_get_columns"
+              doc="Returns the value of the ::columns property."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_item_width"
+              c:identifier="gtk_icon_view_set_item_width"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="item_width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_item_width"
+              c:identifier="gtk_icon_view_get_item_width"
+              doc="Returns the value of the ::item-width property."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_spacing"
+              c:identifier="gtk_icon_view_set_spacing"
+              doc="Sets the ::spacing property which specifies the space
+which is inserted between the cells (i.e. the icon and
+the text) of an item."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_spacing"
+              c:identifier="gtk_icon_view_get_spacing"
+              doc="Returns the value of the ::spacing property."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_row_spacing"
+              c:identifier="gtk_icon_view_set_row_spacing"
+              doc="Sets the ::row-spacing property which specifies the space
+which is inserted between the rows of the icon view."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="row_spacing" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_spacing"
+              c:identifier="gtk_icon_view_get_row_spacing"
+              doc="Returns the value of the ::row-spacing property."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_column_spacing"
+              c:identifier="gtk_icon_view_set_column_spacing"
+              doc="Sets the ::column-spacing property which specifies the space
+which is inserted between the columns of the icon view."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column_spacing" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column_spacing"
+              c:identifier="gtk_icon_view_get_column_spacing"
+              doc="Returns the value of the ::column-spacing property."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_margin"
+              c:identifier="gtk_icon_view_set_margin"
+              doc="Sets the ::margin property which specifies the space
+which is inserted at the top, bottom, left and right
+of the icon view."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="margin" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_margin"
+              c:identifier="gtk_icon_view_get_margin"
+              doc="Returns the value of the ::margin property."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_item_padding"
+              c:identifier="gtk_icon_view_set_item_padding"
+              doc="Sets the #GtkIconView:item-padding property which specifies the padding
+around each of the icon view&apos;s items."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="item_padding" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_item_padding"
+              c:identifier="gtk_icon_view_get_item_padding"
+              doc="Returns the value of the ::item-padding property."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_path_at_pos"
+              c:identifier="gtk_icon_view_get_path_at_pos"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </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>
+        </parameters>
+      </method>
+      <method name="get_item_at_pos"
+              c:identifier="gtk_icon_view_get_item_at_pos"
+              doc="at (@x, @y), or %NULL
+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."
+              version="2.8">
+        <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="path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Return location for the path, or %NULL">
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="cell" transfer-ownership="none">
+            <type name="CellRenderer" c:type="GtkCellRenderer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible_range"
+              c:identifier="gtk_icon_view_get_visible_range"
+              doc="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."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Return location for start of region, or %NULL">
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="end_path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Return location for end of region, or %NULL">
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="selected_foreach"
+              c:identifier="gtk_icon_view_selected_foreach"
+              doc="Calls a function for each selected icon. Note that the model or
+selection cannot be modified from within this function."
+              version="2.6">
+        <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="IconViewForeachFunc" c:type="GtkIconViewForeachFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_selection_mode"
+              c:identifier="gtk_icon_view_set_selection_mode"
+              doc="Sets the selection mode of the @icon_view."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="SelectionMode" c:type="GtkSelectionMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selection_mode"
+              c:identifier="gtk_icon_view_get_selection_mode"
+              doc="Gets the selection mode of the @icon_view."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="SelectionMode" c:type="GtkSelectionMode"/>
+        </return-value>
+      </method>
+      <method name="select_path"
+              c:identifier="gtk_icon_view_select_path"
+              doc="Selects the row at @path."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect_path"
+              c:identifier="gtk_icon_view_unselect_path"
+              doc="Unselects the row at @path."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="path_is_selected"
+              c:identifier="gtk_icon_view_path_is_selected"
+              doc="Returns %TRUE if the icon pointed to by @path is currently
+selected. If @path does not point to a valid location, %FALSE is returned."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selected_items"
+              c:identifier="gtk_icon_view_get_selected_items"
+              doc="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);
+]|"
+              version="2.6">
+        <return-value transfer-ownership="full"
+                      doc="A #GList containing a #GtkTreePath for each selected row.">
+          <type name="GLib.List" c:type="GList*">
+            <type name="TreePath"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="select_all"
+              c:identifier="gtk_icon_view_select_all"
+              doc="Selects all the icons. @icon_view must has its selection mode set
+to #GTK_SELECTION_MULTIPLE."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unselect_all"
+              c:identifier="gtk_icon_view_unselect_all"
+              doc="Unselects all the icons."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="item_activated"
+              c:identifier="gtk_icon_view_item_activated"
+              doc="Activates the item determined by @path."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor"
+              c:identifier="gtk_icon_view_set_cursor"
+              doc="Sets the current keyboard focus to be at @path, and selects it.  This is
+useful when you want to focus the user&apos;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."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="cell"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="One of the cell renderers of @icon_view, or %NULL">
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="start_editing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cursor"
+              c:identifier="gtk_icon_view_get_cursor"
+              doc="Fills in @path and @cell with the current cursor path and cell.
+If the cursor isn&apos;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()."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Return location for the current cursor path, or %NULL">
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="cell"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Return location the current focus cell, or %NULL">
+            <type name="CellRenderer" c:type="GtkCellRenderer**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scroll_to_path"
+              c:identifier="gtk_icon_view_scroll_to_path"
+              doc="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."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="use_align" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="row_align" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="col_align" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enable_model_drag_source"
+              c:identifier="gtk_icon_view_enable_model_drag_source"
+              doc="widget
+Turns @icon_view into a drag source for automatic DND. Calling this
+method sets #GtkIconView:reorderable to %FALSE."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_button_mask" transfer-ownership="none">
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+          <parameter name="targets" transfer-ownership="none">
+            <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+          </parameter>
+          <parameter name="n_targets" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="actions" transfer-ownership="none">
+            <type name="Gdk.DragAction" c:type="GdkDragAction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enable_model_drag_dest"
+              c:identifier="gtk_icon_view_enable_model_drag_dest"
+              doc="widget
+Turns @icon_view into a drop destination for automatic DND. Calling this
+method sets #GtkIconView:reorderable to %FALSE."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+          </parameter>
+          <parameter name="n_targets" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="actions" transfer-ownership="none">
+            <type name="Gdk.DragAction" c:type="GdkDragAction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_model_drag_source"
+              c:identifier="gtk_icon_view_unset_model_drag_source"
+              doc="Undoes the effect of gtk_icon_view_enable_model_drag_source(). Calling this
+method sets #GtkIconView:reorderable to %FALSE."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unset_model_drag_dest"
+              c:identifier="gtk_icon_view_unset_model_drag_dest"
+              doc="Undoes the effect of gtk_icon_view_enable_model_drag_dest(). Calling this
+method sets #GtkIconView:reorderable to %FALSE."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_reorderable"
+              c:identifier="gtk_icon_view_set_reorderable"
+              doc="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&apos;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."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="reorderable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_reorderable"
+              c:identifier="gtk_icon_view_get_reorderable"
+              doc="Retrieves whether the user can reorder the list via drag-and-drop.
+See gtk_icon_view_set_reorderable()."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_drag_dest_item"
+              c:identifier="gtk_icon_view_set_drag_dest_item"
+              doc="Sets the item that is highlighted for feedback."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The path of the item to highlight, or %NULL.">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="IconViewDropPosition"
+                  c:type="GtkIconViewDropPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_drag_dest_item"
+              c:identifier="gtk_icon_view_get_drag_dest_item"
+              doc="Gets information about the item that is highlighted for feedback."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Return location for the path of the highlighted item, or %NULL.">
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="pos"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Return location for the drop position, or %NULL">
+            <type name="IconViewDropPosition"
+                  c:type="GtkIconViewDropPosition*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_dest_item_at_pos"
+              c:identifier="gtk_icon_view_get_dest_item_at_pos"
+              doc="Determines the destination item for a given position."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="drag_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="drag_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Return location for the path of the item, or %NULL.">
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="pos"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Return location for the drop position, or %NULL">
+            <type name="IconViewDropPosition"
+                  c:type="GtkIconViewDropPosition*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_drag_icon"
+              c:identifier="gtk_icon_view_create_drag_icon"
+              doc="Creates a #GdkPixmap representation of the item at @path.
+This image is used for a drag icon."
+              version="2.8">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_widget_to_bin_window_coords"
+              c:identifier="gtk_icon_view_convert_widget_to_bin_window_coords"
+              doc="Converts widget coordinates to coordinates for the bin_window,
+as expected by e.g. gtk_icon_view_get_path_at_pos()."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="wy" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="bx" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="by" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_item"
+              c:identifier="gtk_icon_view_set_tooltip_item"
+              doc="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()."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tooltip" transfer-ownership="none">
+            <type name="Tooltip" c:type="GtkTooltip*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_cell"
+              c:identifier="gtk_icon_view_set_tooltip_cell"
+              doc="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."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tooltip" transfer-ownership="none">
+            <type name="Tooltip" c:type="GtkTooltip*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="cell"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkCellRenderer or %NULL">
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tooltip_context"
+              c:identifier="gtk_icon_view_get_tooltip_context"
+              doc="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&apos;s bin_window if @keyboard_tooltip is %FALSE."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="keyboard_tip" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="model"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a pointer to receive a #GtkTreeModel or %NULL">
+            <type name="TreeModel" c:type="GtkTreeModel**"/>
+          </parameter>
+          <parameter name="path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a pointer to receive a #GtkTreePath or %NULL">
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="iter"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a pointer to receive a #GtkTreeIter or %NULL">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_column"
+              c:identifier="gtk_icon_view_set_tooltip_column"
+              doc="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&apos;s model
+containing the tooltip texts, or -1 to disable this feature.
+When enabled, #GtkWidget::has-tooltip will be set to %TRUE and"
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tooltip_column"
+              c:identifier="gtk_icon_view_get_tooltip_column">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <property name="column-spacing"
+                version="2.6"
+                writable="1"
+                doc="The column-spacing property specifies the space which is inserted between
+the columns of the icon view.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="columns"
+                version="2.6"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="item-padding"
+                version="2.18"
+                writable="1"
+                doc="The item-padding property specifies the padding around each
+of the icon view&apos;s item.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="item-width"
+                version="2.6"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="margin"
+                version="2.6"
+                writable="1"
+                doc="The margin property specifies the space which is inserted
+at the edges of the icon view.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="markup-column"
+                version="2.6"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="model" writable="1">
+        <type name="TreeModel" c:type="GtkTreeModel"/>
+      </property>
+      <property name="orientation"
+                version="2.6"
+                writable="1"
+                doc="The orientation property specifies how the cells (i.e. the icon and
+the text) of the item are positioned relative to each other.">
+        <type name="Orientation" c:type="GtkOrientation"/>
+      </property>
+      <property name="pixbuf-column"
+                version="2.6"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="reorderable"
+                version="2.8"
+                writable="1"
+                doc="The reorderable property specifies if the items can be reordered
+by DND.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="row-spacing"
+                version="2.6"
+                writable="1"
+                doc="The row-spacing property specifies the space which is inserted between
+the rows of the icon view.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="selection-mode"
+                version="2.6"
+                writable="1"
+                doc="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.">
+        <type name="SelectionMode" c:type="GtkSelectionMode"/>
+      </property>
+      <property name="spacing"
+                version="2.6"
+                writable="1"
+                doc="The spacing property specifies the space which is inserted between
+the cells (i.e. the icon and the text) of an item.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="text-column"
+                version="2.6"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="tooltip-column" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="parent">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv">
+        <type name="IconViewPrivate" c:type="GtkIconViewPrivate*"/>
+      </field>
+      <glib:signal name="activate-cursor-item"
+                   doc="A &lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="item-activated"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-cursor"
+                   doc="The ::move-cursor signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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 &quot;pages&quot;&lt;/listitem&gt;
+&lt;/itemizedlist&gt;
+All of these will extend the selection when combined with
+the Shift modifier.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="step" transfer-ownership="none">
+            <type name="MovementStep" c:type="GtkMovementStep"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="select-all"
+                   doc="A &lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="select-cursor-item"
+                   doc="A &lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="selection-changed"
+                   doc="The ::selection-changed signal is emitted when the selection
+(i.e. the set of selected items) changes.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="set-scroll-adjustments">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Adjustment" c:type="GtkAdjustment"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="Adjustment" c:type="GtkAdjustment"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="toggle-cursor-item"
+                   doc="A &lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unselect-all"
+                   doc="A &lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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"
+                  c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="move_cursor">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="activate_cursor_item">
+        <callback name="activate_cursor_item" c:type="activate_cursor_item">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+      <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">
+      <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>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="IconViewPrivate" c:type="GtkIconViewPrivate">
+    </record>
+    <class name="Image"
+           c:type="GtkImage"
+           doc="This struct contain private data only and should be accessed by the functions
+below."
+           parent="Misc"
+           glib:type-name="GtkImage"
+           glib:get-type="gtk_image_get_type"
+           glib:type-struct="ImageClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_image_new"
+                   doc="Creates a new empty #GtkImage widget.">
+        <return-value transfer-ownership="full">
+          <type name="Image" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_pixmap"
+                   c:identifier="gtk_image_new_from_pixmap"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Image" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixmap"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkPixmap, or %NULL">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkBitmap, or %NULL">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_image"
+                   c:identifier="gtk_image_new_from_image"
+                   doc="Creates a #GtkImage widget displaying a @image with a @mask.
+A #GdkImage is a client-side image buffer in the pixel format of the
+current display. The #GtkImage does not assume a reference to the
+image or mask; you still need to unref them if you own references.
+#GtkImage will add its own reference rather than adopting yours.">
+        <return-value transfer-ownership="full">
+          <type name="Image" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="image"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkImage, or %NULL">
+            <type name="Gdk.Image" c:type="GdkImage*"/>
+          </parameter>
+          <parameter name="mask"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkBitmap, or %NULL">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_file"
+                   c:identifier="gtk_image_new_from_file"
+                   doc="Creates a new #GtkImage displaying the file @filename. If the file
+isn&apos;t found or can&apos;t be loaded, the resulting #GtkImage will
+display a &quot;broken image&quot; 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.">
+        <return-value transfer-ownership="full">
+          <type name="Image" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_pixbuf"
+                   c:identifier="gtk_image_new_from_pixbuf"
+                   doc="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().">
+        <return-value transfer-ownership="full">
+          <type name="Image" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkPixbuf, or %NULL">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_stock"
+                   c:identifier="gtk_image_new_from_stock"
+                   doc="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&apos;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().">
+        <return-value transfer-ownership="full">
+          <type name="Image" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size"
+                     transfer-ownership="none"
+                     doc="a stock icon size">
+            <type name="int" c:type="GtkIconSize"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_icon_set"
+                   c:identifier="gtk_image_new_from_icon_set"
+                   doc="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&apos;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.">
+        <return-value transfer-ownership="full">
+          <type name="Image" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_set" transfer-ownership="none">
+            <type name="IconSet" c:type="GtkIconSet*"/>
+          </parameter>
+          <parameter name="size"
+                     transfer-ownership="none"
+                     doc="a stock icon size">
+            <type name="int" c:type="GtkIconSize"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_animation"
+                   c:identifier="gtk_image_new_from_animation"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Image" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="animation" transfer-ownership="none">
+            <type name="GdkPixbuf.PixbufAnimation"
+                  c:type="GdkPixbufAnimation*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_icon_name"
+                   c:identifier="gtk_image_new_from_icon_name"
+                   doc="Creates a #GtkImage displaying an icon from the current icon theme.
+If the icon name isn&apos;t known, a &quot;broken image&quot; icon will be
+displayed instead.  If the current icon theme is changed, the icon
+will be updated appropriately."
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="Image" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size"
+                     transfer-ownership="none"
+                     doc="a stock icon size">
+            <type name="int" c:type="GtkIconSize"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_gicon"
+                   c:identifier="gtk_image_new_from_gicon"
+                   doc="Creates a #GtkImage displaying an icon from the current icon theme.
+If the icon name isn&apos;t known, a &quot;broken image&quot; icon will be
+displayed instead.  If the current icon theme is changed, the icon
+will be updated appropriately."
+                   version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Image" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <type name="Gio.Icon" c:type="GIcon*"/>
+          </parameter>
+          <parameter name="size"
+                     transfer-ownership="none"
+                     doc="a stock icon size">
+            <type name="int" c:type="GtkIconSize"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="clear"
+              c:identifier="gtk_image_clear"
+              doc="Resets the image to be empty."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_from_pixmap"
+              c:identifier="gtk_image_set_from_pixmap"
+              doc="See gtk_image_new_from_pixmap() for details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixmap"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkPixmap or %NULL">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkBitmap or %NULL">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_image"
+              c:identifier="gtk_image_set_from_image"
+              doc="See gtk_image_new_from_image() for details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gdk_image"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkImage or %NULL">
+            <type name="Gdk.Image" c:type="GdkImage*"/>
+          </parameter>
+          <parameter name="mask"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkBitmap or %NULL">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_file"
+              c:identifier="gtk_image_set_from_file"
+              doc="See gtk_image_new_from_file() for details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a filename or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_pixbuf"
+              c:identifier="gtk_image_set_from_pixbuf"
+              doc="See gtk_image_new_from_pixbuf() for details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkPixbuf or %NULL">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_stock"
+              c:identifier="gtk_image_set_from_stock"
+              doc="See gtk_image_new_from_stock() for details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size"
+                     transfer-ownership="none"
+                     doc="a stock icon size">
+            <type name="int" c:type="GtkIconSize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_icon_set"
+              c:identifier="gtk_image_set_from_icon_set"
+              doc="See gtk_image_new_from_icon_set() for details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_set" transfer-ownership="none">
+            <type name="IconSet" c:type="GtkIconSet*"/>
+          </parameter>
+          <parameter name="size"
+                     transfer-ownership="none"
+                     doc="a stock icon size">
+            <type name="int" c:type="GtkIconSize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_animation"
+              c:identifier="gtk_image_set_from_animation"
+              doc="Causes the #GtkImage to display the given animation (or display
+nothing, if you set the animation to %NULL).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="animation" transfer-ownership="none">
+            <type name="GdkPixbuf.PixbufAnimation"
+                  c:type="GdkPixbufAnimation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_icon_name"
+              c:identifier="gtk_image_set_from_icon_name"
+              doc="See gtk_image_new_from_icon_name() for details."
+              version="2.6">
+        <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>
+          <parameter name="size" transfer-ownership="none" doc="an icon size">
+            <type name="int" c:type="GtkIconSize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_gicon"
+              c:identifier="gtk_image_set_from_gicon"
+              doc="See gtk_image_new_from_gicon() for details."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <type name="Gio.Icon" c:type="GIcon*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none" doc="an icon size">
+            <type name="int" c:type="GtkIconSize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pixel_size"
+              c:identifier="gtk_image_set_pixel_size"
+              doc="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()."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixel_size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_storage_type"
+              c:identifier="gtk_image_get_storage_type"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="ImageType" c:type="GtkImageType"/>
+        </return-value>
+      </method>
+      <method name="get_pixmap"
+              c:identifier="gtk_image_get_pixmap"
+              doc="pixmap, or %NULL
+mask, or %NULL
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixmap"
+                     direction="out"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="location to store the">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap**"/>
+          </parameter>
+          <parameter name="mask"
+                     direction="out"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="location to store the">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_image"
+              c:identifier="gtk_image_get_image"
+              doc="a #GtkImage, or %NULL
+#GdkBitmap, or %NULL
+Gets the #GdkImage and mask being displayed by the #GtkImage.
+The storage type of the image must be %GTK_IMAGE_EMPTY or
+%GTK_IMAGE_IMAGE (see gtk_image_get_storage_type()).
+The caller of this function does not own a reference to the
+returned image and mask.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gdk_image"
+                     direction="out"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="return location for">
+            <type name="Gdk.Image" c:type="GdkImage**"/>
+          </parameter>
+          <parameter name="mask"
+                     direction="out"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="return location for a">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixbuf"
+              c:identifier="gtk_image_get_pixbuf"
+              doc="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">
+        <return-value transfer-ownership="none"
+                      doc="the displayed pixbuf, or %NULL if">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="get_stock"
+              c:identifier="gtk_image_get_stock"
+              doc="stock icon name, or %NULL
+size, or %NULL
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id"
+                     direction="out"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="place to store a">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="size"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="place to store a stock icon">
+            <type name="int" c:type="GtkIconSize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_set"
+              c:identifier="gtk_image_get_icon_set"
+              doc="#GtkIconSet, or %NULL
+icon size, or %NULL
+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()).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_set"
+                     direction="out"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="location to store a">
+            <type name="IconSet" c:type="GtkIconSet**"/>
+          </parameter>
+          <parameter name="size"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store a stock">
+            <type name="int" c:type="GtkIconSize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_animation"
+              c:identifier="gtk_image_get_animation"
+              doc="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">
+        <return-value transfer-ownership="none"
+                      doc="the displayed animation, or %NULL if">
+          <type name="GdkPixbuf.PixbufAnimation" c:type="GdkPixbufAnimation*"/>
+        </return-value>
+      </method>
+      <method name="get_icon_name"
+              c:identifier="gtk_image_get_icon_name"
+              doc="icon name, or %NULL
+or %NULL
+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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name"
+                     direction="out"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="place to store an">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="size"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="place to store an icon size,">
+            <type name="int" c:type="GtkIconSize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_gicon"
+              c:identifier="gtk_image_get_gicon"
+              doc="#GIcon, or %NULL
+or %NULL
+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."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gicon"
+                     direction="out"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="place to store a">
+            <type name="Gio.Icon" c:type="GIcon**"/>
+          </parameter>
+          <parameter name="size"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="place to store an icon size,">
+            <type name="int" c:type="GtkIconSize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixel_size"
+              c:identifier="gtk_image_get_pixel_size"
+              doc="Gets the pixel size used for named icons."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set"
+              c:identifier="gtk_image_set"
+              doc="Sets the #GtkImage."
+              deprecated="Use gtk_image_set_from_image() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="Gdk.Image" c:type="GdkImage*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get"
+              c:identifier="gtk_image_get"
+              doc="Gets the #GtkImage."
+              deprecated="Use gtk_image_get_image() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="Gdk.Image" c:type="GdkImage**"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="file" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="gicon"
+                version="2.14"
+                writable="1"
+                doc="The GIcon displayed in the GtkImage. For themed icons,
+If the icon theme is changed, the image will be updated
+automatically.">
+        <type name="Gio.Icon" c:type="GIcon"/>
+      </property>
+      <property name="icon-name"
+                version="2.6"
+                writable="1"
+                doc="The name of the icon in the icon theme. If the icon theme is
+changed, the image will be updated automatically.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="icon-set" writable="1">
+        <type name="IconSet" c:type="GtkIconSet"/>
+      </property>
+      <property name="icon-size" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="image" writable="1">
+        <type name="Gdk.Image" c:type="GdkImage"/>
+      </property>
+      <property name="mask" writable="1">
+        <type name="Gdk.Pixmap" c:type="GdkPixmap"/>
+      </property>
+      <property name="pixbuf" writable="1">
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf"/>
+      </property>
+      <property name="pixbuf-animation" writable="1">
+        <type name="GdkPixbuf.PixbufAnimation" c:type="GdkPixbufAnimation"/>
+      </property>
+      <property name="pixel-size"
+                version="2.6"
+                writable="1"
+                doc="The &quot;pixel-size&quot; property can be used to specify a fixed size
+overriding the #GtkImage:icon-size property for images of type
+%GTK_IMAGE_ICON_NAME.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="pixmap" writable="1">
+        <type name="Gdk.Pixmap" c:type="GdkPixmap"/>
+      </property>
+      <property name="stock" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="storage-type">
+        <type name="ImageType" c:type="GtkImageType"/>
+      </property>
+      <field name="misc">
+        <type name="Misc" c:type="GtkMisc"/>
+      </field>
+      <field name="storage_type">
+        <type name="ImageType" c:type="GtkImageType"/>
+      </field>
+      <union name="data" c:type="data">
+        <field name="pixmap" writable="1">
+          <type name="ImagePixmapData" c:type="GtkImagePixmapData"/>
+        </field>
+        <field name="image" writable="1">
+          <type name="ImageImageData" c:type="GtkImageImageData"/>
+        </field>
+        <field name="pixbuf" writable="1">
+          <type name="ImagePixbufData" c:type="GtkImagePixbufData"/>
+        </field>
+        <field name="stock" writable="1">
+          <type name="ImageStockData" c:type="GtkImageStockData"/>
+        </field>
+        <field name="icon_set" writable="1">
+          <type name="ImageIconSetData" c:type="GtkImageIconSetData"/>
+        </field>
+        <field name="anim" writable="1">
+          <type name="ImageAnimationData" c:type="GtkImageAnimationData"/>
+        </field>
+        <field name="name" writable="1">
+          <type name="ImageIconNameData" c:type="GtkImageIconNameData"/>
+        </field>
+        <field name="gicon" writable="1">
+          <type name="ImageGIconData" c:type="GtkImageGIconData"/>
+        </field>
+      </union>
+      <field name="mask">
+        <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+      </field>
+      <field name="icon_size">
+        <type name="IconSize" c:type="GtkIconSize"/>
+      </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="uint" 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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_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="uint" 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="uint" 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">
+      <field name="image" writable="1">
+        <type name="Gdk.Image" c:type="GdkImage*"/>
+      </field>
+    </record>
+    <class name="ImageMenuItem"
+           c:type="GtkImageMenuItem"
+           parent="MenuItem"
+           glib:type-name="GtkImageMenuItem"
+           glib:get-type="gtk_image_menu_item_get_type"
+           glib:type-struct="ImageMenuItemClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_image_menu_item_new"
+                   doc="Creates a new #GtkImageMenuItem with an empty label.">
+        <return-value transfer-ownership="full">
+          <type name="ImageMenuItem" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_image_menu_item_new_with_label"
+                   doc="Creates a new #GtkImageMenuItem containing a label.">
+        <return-value transfer-ownership="full">
+          <type name="ImageMenuItem" 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_image_menu_item_new_with_mnemonic"
+                   doc="mnemonic character
+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.">
+        <return-value transfer-ownership="full">
+          <type name="ImageMenuItem" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_stock"
+                   c:identifier="gtk_image_menu_item_new_from_stock"
+                   doc="or %NULL.
+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.">
+        <return-value transfer-ownership="full">
+          <type name="ImageMenuItem" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="accel_group" transfer-ownership="none">
+            <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_always_show_image"
+              c:identifier="gtk_image_menu_item_set_always_show_image"
+              doc="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."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="always_show" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_always_show_image"
+              c:identifier="gtk_image_menu_item_get_always_show_image"
+              doc="Returns whether the menu item will ignore the #GtkSettings:gtk-menu-images
+setting and always show the image, if available."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </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="get_image"
+              c:identifier="gtk_image_menu_item_get_image"
+              doc="Gets the widget that is currently set as the image of @image_menu_item.
+See gtk_image_menu_item_set_image().">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_use_stock"
+              c:identifier="gtk_image_menu_item_set_use_stock"
+              doc="If %TRUE, the label set in the menuitem is used as a
+stock id to select the stock item for the item."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_stock" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_stock"
+              c:identifier="gtk_image_menu_item_get_use_stock"
+              doc="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"
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_accel_group"
+              c:identifier="gtk_image_menu_item_set_accel_group"
+              doc="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())."
+              version="2.16">
+        <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>
+        </parameters>
+      </method>
+      <property name="accel-group"
+                version="2.16"
+                readable="0"
+                writable="1"
+                doc="The Accel Group to use for stock accelerator keys">
+        <type name="AccelGroup" c:type="GtkAccelGroup"/>
+      </property>
+      <property name="always-show-image"
+                version="2.16"
+                writable="1"
+                construct="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="image" writable="1">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <property name="use-stock"
+                version="2.16"
+                writable="1"
+                construct="1"
+                doc="If %TRUE, the label set in the menuitem is used as a
+stock id to select the stock item for the item.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="menu_item">
+        <type name="MenuItem" c:type="GtkMenuItem"/>
+      </field>
+      <field name="image">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </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="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="ImageStockData" c:type="GtkImageStockData">
+      <field name="stock_id" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <enumeration name="ImageType"
+                 doc="This image type was added in GTK+ 2.6
+This image type was added in GTK+ 2.14
+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 &quot;get&quot;
+functions), but they will all return %NULL values."
+                 glib:type-name="GtkImageType"
+                 glib:get-type="gtk_image_type_get_type"
+                 c:type="GtkImageType">
+      <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="image"
+              value="2"
+              c:identifier="GTK_IMAGE_IMAGE"
+              glib:nick="image"/>
+      <member name="pixbuf"
+              value="3"
+              c:identifier="GTK_IMAGE_PIXBUF"
+              glib:nick="pixbuf"/>
+      <member name="stock"
+              value="4"
+              c:identifier="GTK_IMAGE_STOCK"
+              glib:nick="stock"/>
+      <member name="icon_set"
+              value="5"
+              c:identifier="GTK_IMAGE_ICON_SET"
+              glib:nick="icon-set"/>
+      <member name="animation"
+              value="6"
+              c:identifier="GTK_IMAGE_ANIMATION"
+              glib:nick="animation"/>
+      <member name="icon_name"
+              value="7"
+              c:identifier="GTK_IMAGE_ICON_NAME"
+              glib:nick="icon-name"/>
+      <member name="gicon"
+              value="8"
+              c:identifier="GTK_IMAGE_GICON"
+              glib:nick="gicon"/>
+    </enumeration>
+    <class name="InfoBar"
+           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"/>
+      <constructor name="new"
+                   c:identifier="gtk_info_bar_new"
+                   doc="Creates a new #GtkInfoBar object."
+                   version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="InfoBar" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_buttons"
+                   c:identifier="gtk_info_bar_new_with_buttons"
+                   doc="with %NULL
+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 &quot;response&quot; signal with the corresponding response ID.">
+        <return-value transfer-ownership="full">
+          <type name="InfoBar" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_button_text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="stock ID or text to go in first button, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_action_area"
+              c:identifier="gtk_info_bar_get_action_area"
+              doc="Returns the action area of @info_bar."
+              version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_content_area"
+              c:identifier="gtk_info_bar_get_content_area"
+              doc="Returns the content area of @info_bar."
+              version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="add_action_widget"
+              c:identifier="gtk_info_bar_add_action_widget"
+              doc="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."
+              version="2.18">
+        <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="response_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_button"
+              c:identifier="gtk_info_bar_add_button"
+              doc="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 &quot;response&quot; signal with the given response_id. The button is appended
+to the end of the info bars&apos;s action area. The button widget is
+returned, but usually you don&apos;t need it."
+              version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="button_text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="response_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_buttons"
+              c:identifier="gtk_info_bar_add_buttons"
+              doc="ending with %NULL
+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."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_button_text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_response_sensitive"
+              c:identifier="gtk_info_bar_set_response_sensitive"
+              doc="Calls gtk_widget_set_sensitive (widget, setting) for each
+widget in the info bars&apos;s action area with the given response_id.
+A convenient way to sensitize/desensitize dialog buttons."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="response_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_default_response"
+              c:identifier="gtk_info_bar_set_default_response"
+              doc="Sets the last widget in the info bar&apos;s action area with
+the given response_id as the default widget for the dialog.
+Pressing &quot;Enter&quot; normally activates the default widget.
+Note that this function currently requires @info_bar to
+be added to a widget hierarchy."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="response_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="response"
+              c:identifier="gtk_info_bar_response"
+              doc="Emits the &apos;response&apos; signal with the given @response_id."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="response_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_message_type"
+              c:identifier="gtk_info_bar_set_message_type"
+              doc="Sets the message type of the message area.
+GTK+ uses this type to determine what color to use
+when drawing the message area."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message_type" transfer-ownership="none">
+            <type name="MessageType" c:type="GtkMessageType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_message_type"
+              c:identifier="gtk_info_bar_get_message_type"
+              doc="Returns the message type of the message area."
+              version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="MessageType" c:type="GtkMessageType"/>
+        </return-value>
+      </method>
+      <property name="message-type"
+                version="2.18"
+                writable="1"
+                construct="1"
+                doc="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:
+&quot;info_fg_color&quot;, &quot;info_bg_color&quot;,
+&quot;warning_fg_color&quot;, &quot;warning_bg_color&quot;,
+&quot;question_fg_color&quot;, &quot;question_bg_color&quot;,
+&quot;error_fg_color&quot;, &quot;error_bg_color&quot;.
+&quot;other_fg_color&quot;, &quot;other_bg_color&quot;.
+If the type is #GTK_MESSAGE_OTHER, no info bar is painted but the
+colors are still set.">
+        <type name="MessageType" c:type="GtkMessageType"/>
+      </property>
+      <field name="parent">
+        <type name="HBox" c:type="GtkHBox"/>
+      </field>
+      <field name="priv">
+        <type name="InfoBarPrivate" c:type="GtkInfoBarPrivate*"/>
+      </field>
+      <glib:signal name="close"
+                   doc="The ::close signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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."
+                   version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="response"
+                   doc="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."
+                   version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="response_id" transfer-ownership="none">
+            <type name="int" c:type="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" c:type="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="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="close">
+        <callback name="close" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved5">
+        <callback name="gtk_reserved5" c:type="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved6">
+        <callback name="gtk_reserved6" c:type="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="InfoBarPrivate" c:type="GtkInfoBarPrivate">
+    </record>
+    <class name="InputDialog"
+           c:type="GtkInputDialog"
+           parent="Dialog"
+           glib:type-name="GtkInputDialog"
+           glib:get-type="gtk_input_dialog_get_type"
+           glib:type-struct="InputDialogClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_input_dialog_new">
+        <return-value transfer-ownership="full">
+          <type name="InputDialog" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <field name="dialog">
+        <type name="Dialog" c:type="GtkDialog"/>
+      </field>
+      <field name="axis_list">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="axis_listbox">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="mode_optionmenu">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="close_button">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="save_button">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="axis_items">
+        <array zero-terminated="0" c:type="GtkWidget*">
+          <type name="Widget"/>
+        </array>
+      </field>
+      <field name="current_device">
+        <type name="Gdk.Device" c:type="GdkDevice*"/>
+      </field>
+      <field name="keys_list">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="keys_listbox">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <glib:signal name="disable-device">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Device" c:type="GdkDevice"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="enable-device">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Device" c:type="GdkDevice"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="InputDialogClass"
+            c:type="GtkInputDialogClass"
+            glib:is-gtype-struct-for="InputDialog">
+      <field name="parent_class">
+        <type name="DialogClass" c:type="GtkDialogClass"/>
+      </field>
+      <field name="enable_device">
+        <callback name="enable_device" c:type="enable_device">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="inputd" transfer-ownership="none">
+              <type name="InputDialog" c:type="GtkInputDialog*"/>
+            </parameter>
+            <parameter name="device" transfer-ownership="none">
+              <type name="Gdk.Device" c:type="GdkDevice*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="disable_device">
+        <callback name="disable_device" c:type="disable_device">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="inputd" transfer-ownership="none">
+              <type name="InputDialog" c:type="GtkInputDialog*"/>
+            </parameter>
+            <parameter name="device" transfer-ownership="none">
+              <type name="Gdk.Device" c:type="GdkDevice*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="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"/>
+      <constructor name="new"
+                   c:identifier="gtk_invisible_new"
+                   doc="Creates a new #GtkInvisible.">
+        <return-value transfer-ownership="full">
+          <type name="Invisible" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_for_screen"
+                   c:identifier="gtk_invisible_new_for_screen"
+                   doc="the new #GtkInvisible will be created.
+Creates a new #GtkInvisible object for a specified screen"
+                   version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Invisible" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <type name="Gdk.Screen" c:type="GdkScreen*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_screen"
+              c:identifier="gtk_invisible_set_screen"
+              doc="Sets the #GdkScreen where the #GtkInvisible object will be displayed."
+              version="2.2">
+        <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="get_screen"
+              c:identifier="gtk_invisible_get_screen"
+              doc="Returns the #GdkScreen object associated with @invisible"
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <property name="screen" writable="1">
+        <type name="Gdk.Screen" c:type="GdkScreen"/>
+      </property>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="has_user_ref_count">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="screen">
+        <type name="Gdk.Screen" c:type="GdkScreen*"/>
+      </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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="Item"
+           c:type="GtkItem"
+           parent="Bin"
+           abstract="1"
+           glib:type-name="GtkItem"
+           glib:get-type="gtk_item_get_type"
+           glib:type-struct="ItemClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <function name="factories_path_delete"
+                c:identifier="gtk_item_factories_path_delete"
+                doc="starts with a factory path
+Deletes all widgets constructed from the specified path."
+                deprecated="Use #GtkUIManager instead."
+                deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ifactory_path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="select" c:identifier="gtk_item_select">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="deselect" c:identifier="gtk_item_deselect">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="toggle" c:identifier="gtk_item_toggle">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="bin">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+      <glib:signal name="deselect">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="select">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="toggle">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ItemClass"
+            c:type="GtkItemClass"
+            glib:is-gtype-struct-for="Item">
+      <field name="parent_class">
+        <type name="BinClass" c:type="GtkBinClass"/>
+      </field>
+      <field name="select">
+        <callback name="select" c:type="select">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="item" transfer-ownership="none">
+              <type name="Item" c:type="GtkItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="deselect">
+        <callback name="deselect" c:type="deselect">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="item" transfer-ownership="none">
+              <type name="Item" c:type="GtkItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="toggle">
+        <callback name="toggle" c:type="toggle">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="item" transfer-ownership="none">
+              <type name="Item" c:type="GtkItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="ItemFactory"
+           c:type="GtkItemFactory"
+           parent="Object"
+           glib:type-name="GtkItemFactory"
+           glib:get-type="gtk_item_factory_get_type"
+           glib:type-struct="ItemFactoryClass">
+      <constructor name="new"
+                   c:identifier="gtk_item_factory_new"
+                   doc="#GTK_TYPE_MENU_BAR, #GTK_TYPE_MENU or #GTK_TYPE_OPTION_MENU
+&lt;literal&gt;&quot;&amp;lt;name&amp;gt;&quot;&lt;/literal&gt;
+menu items will be added, or %NULL to create a new one
+Creates a new #GtkItemFactory.
+Beware that the returned object does not have a floating reference."
+                   deprecated="Use #GtkUIManager instead."
+                   deprecated-version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ItemFactory" c:type="GtkItemFactory*"/>
+        </return-value>
+        <parameters>
+          <parameter name="container_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="accel_group"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkAccelGroup to which the accelerators for the">
+            <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="add_foreign"
+                c:identifier="gtk_item_factory_add_foreign"
+                doc="Installs an accelerator for @accel_widget in @accel_group, that causes
+the ::activate signal to be emitted if the accelerator is activated.
+This function can be used to make widgets participate in the accel
+saving/restoring functionality provided by gtk_accel_map_save() and
+gtk_accel_map_load(), even if they haven&apos;t been created by an item
+factory.
+gtk_menu_item_set_accel_path() and gtk_widget_set_accel_path(); don&apos;t
+use gtk_item_factory_add_foreign() in new code, since it is likely to
+be removed in the future."
+                deprecated="The recommended API for this purpose are the functions"
+                deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="full_path" 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="keyval" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifiers" transfer-ownership="none">
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="from_widget"
+                c:identifier="gtk_item_factory_from_widget"
+                doc="Obtains the item factory from which a widget was created."
+                deprecated="Use #GtkUIManager instead."
+                deprecated-version="2.4">
+        <return-value transfer-ownership="full"
+                      doc="the item factory from which @widget was created, or %NULL">
+          <type name="ItemFactory" c:type="GtkItemFactory*"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="path_from_widget"
+                c:identifier="gtk_item_factory_path_from_widget"
+                doc="factory, %NULL otherwise. This value is owned by GTK+ and must not be
+modified or freed.
+If @widget has been created by an item factory, returns the full path
+to it. (The full path of a widget is the concatenation of the factory
+path specified in gtk_item_factory_new() with the path specified in the
+#GtkItemFactoryEntry from which the widget was created.)"
+                deprecated="Use #GtkUIManager instead."
+                deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <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="popup_data_from_widget"
+                c:identifier="gtk_item_factory_popup_data_from_widget"
+                doc="which @widget was created, or %NULL if @widget wasn&apos;t created
+by an item factory
+Obtains the @popup_data which was passed to
+gtk_item_factory_popup_with_data(). This data is available until the menu
+is popped down again."
+                deprecated="Use #GtkUIManager instead."
+                deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="from_path"
+                c:identifier="gtk_item_factory_from_path"
+                doc="&lt;literal&gt;&quot;&amp;lt;name&amp;gt;&quot;&lt;/literal&gt;
+Finds an item factory which has been constructed using the
+&lt;literal&gt;&quot;&amp;lt;name&amp;gt;&quot;&lt;/literal&gt; prefix of @path as the @path argument
+for gtk_item_factory_new()."
+                deprecated="Use #GtkUIManager instead."
+                deprecated-version="2.4">
+        <return-value transfer-ownership="full"
+                      doc="the #GtkItemFactory created for the given factory path, or %NULL">
+          <type name="ItemFactory" c:type="GtkItemFactory*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="create_menu_entries"
+                c:identifier="gtk_item_factory_create_menu_entries"
+                doc="Creates the menu items from the @entries."
+                deprecated="Use #GtkUIManager instead."
+                deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_entries" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="entries" transfer-ownership="none">
+            <type name="MenuEntry" c:type="GtkMenuEntry*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="construct"
+              c:identifier="gtk_item_factory_construct"
+              doc="#GTK_TYPE_MENU_BAR, #GTK_TYPE_MENU or #GTK_TYPE_OPTION_MENU
+&lt;literal&gt;&quot;&amp;lt;name&amp;gt;&quot;&lt;/literal&gt;
+menu items will be added, or %NULL to create a new one
+Initializes an item factory."
+              deprecated="Use #GtkUIManager instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="container_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="accel_group" transfer-ownership="none">
+            <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_item" c:identifier="gtk_item_factory_get_item">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_widget"
+              c:identifier="gtk_item_factory_get_widget"
+              doc="to a widget
+Obtains the widget which corresponds to @path.
+If the widget corresponding to @path is a menu item which opens a
+submenu, then the submenu is returned. If you are interested in the menu
+item, use gtk_item_factory_get_item() instead."
+              deprecated="Use #GtkUIManager instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="full"
+                      doc="the widget for the given path, or %NULL if @path doesn&apos;t lead">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_widget_by_action"
+              c:identifier="gtk_item_factory_get_widget_by_action"
+              doc="of #GtkItemFactoryEntry
+if no widget was found
+Obtains the widget which was constructed from the #GtkItemFactoryEntry
+with the given @action.
+If there are multiple items with the same action, the result is
+undefined."
+              deprecated="Use #GtkUIManager instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="full"
+                      doc="the widget which corresponds to the given action, or %NULL">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_item_by_action"
+              c:identifier="gtk_item_factory_get_item_by_action"
+              doc="of #GtkItemFactoryEntry
+if no menu item was found
+Obtains the menu item which was constructed from the first
+#GtkItemFactoryEntry with the given @action."
+              deprecated="Use #GtkUIManager instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="full"
+                      doc="the menu item which corresponds to the given action, or %NULL">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_item"
+              c:identifier="gtk_item_factory_create_item"
+              doc="#GtkItemFactoryCallback1, 2 if it is of type #GtkItemFactoryCallback2
+Creates an item for @entry."
+              deprecated="Use #GtkUIManager instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="ItemFactoryEntry" c:type="GtkItemFactoryEntry*"/>
+          </parameter>
+          <parameter name="callback_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="callback_type" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_items"
+              c:identifier="gtk_item_factory_create_items"
+              doc="must by of type #GtkItemFactoryCallback1
+Creates the menu items from the @entries."
+              deprecated="Use #GtkUIManager instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_entries" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="entries" transfer-ownership="none">
+            <type name="ItemFactoryEntry" c:type="GtkItemFactoryEntry*"/>
+          </parameter>
+          <parameter name="callback_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_item"
+              c:identifier="gtk_item_factory_delete_item"
+              doc="Deletes the menu item which was created for @path by the given
+item factory."
+              deprecated="Use #GtkUIManager instead."
+              deprecated-version="2.4">
+        <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="delete_entry"
+              c:identifier="gtk_item_factory_delete_entry"
+              doc="Deletes the menu item which was created from @entry by the given
+item factory."
+              deprecated="Use #GtkUIManager instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry" transfer-ownership="none">
+            <type name="ItemFactoryEntry" c:type="GtkItemFactoryEntry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_entries"
+              c:identifier="gtk_item_factory_delete_entries"
+              doc="Deletes the menu items which were created from the @entries by the given
+item factory."
+              deprecated="Use #GtkUIManager instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_entries" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="entries" transfer-ownership="none">
+            <type name="ItemFactoryEntry" c:type="GtkItemFactoryEntry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="popup"
+              c:identifier="gtk_item_factory_popup"
+              doc="Pops up the menu constructed from the item factory at (@x, @y).
+The @mouse_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 @time_ parameter should be the time stamp of the event that
+initiated the popup. If such an event is not available, use
+gtk_get_current_event_time() instead.
+The operation of the @mouse_button and the @time_ parameter is the same
+as the @button and @activation_time parameters for gtk_menu_popup()."
+              deprecated="Use #GtkUIManager instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="mouse_button" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="time_" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="popup_with_data"
+              c:identifier="gtk_item_factory_popup_with_data"
+              doc="the menu is unposted
+Pops up the menu constructed from the item factory at (@x, @y). Callbacks
+can access the @popup_data while the menu is posted via
+gtk_item_factory_popup_data() and gtk_item_factory_popup_data_from_widget().
+The @mouse_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 @time_ parameter should be the time stamp of the event that
+initiated the popup. If such an event is not available, use
+gtk_get_current_event_time() instead.
+The operation of the @mouse_button and the @time_ parameters is the same
+as the @button and @activation_time parameters for gtk_menu_popup()."
+              deprecated="Use #GtkUIManager instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="popup_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="mouse_button" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="time_" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="popup_data"
+              c:identifier="gtk_item_factory_popup_data"
+              doc="Obtains the @popup_data which was passed to
+gtk_item_factory_popup_with_data(). This data is available until the menu
+is popped down again."
+              deprecated="Use #GtkUIManager instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="set_translate_func"
+              c:identifier="gtk_item_factory_set_translate_func"
+              doc="destroyed and when the translation function is changed again
+Sets a function to be used for translating the path elements before they
+are displayed."
+              deprecated="Use #GtkUIManager instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="TranslateFunc" c:type="GtkTranslateFunc"/>
+          </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="create_items_ac"
+              c:identifier="gtk_item_factory_create_items_ac"
+              doc="#GtkItemFactoryCallback1, 2 if they are of type #GtkItemFactoryCallback2
+Creates the menu items from the @entries."
+              deprecated="Use #GtkUIManager instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_entries" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="entries" transfer-ownership="none">
+            <type name="ItemFactoryEntry" c:type="GtkItemFactoryEntry*"/>
+          </parameter>
+          <parameter name="callback_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="callback_type" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="object">
+        <type name="Object" c:type="GtkObject"/>
+      </field>
+      <field name="path">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="accel_group">
+        <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+      </field>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="items">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="translate_func">
+        <type name="TranslateFunc" c:type="GtkTranslateFunc"/>
+      </field>
+      <field name="translate_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="translate_notify">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+    </class>
+    <callback name="ItemFactoryCallback" c:type="GtkItemFactoryCallback">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <callback name="ItemFactoryCallback1" c:type="GtkItemFactoryCallback1">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="callback_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="callback_action" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="ItemFactoryCallback2" c:type="GtkItemFactoryCallback2">
+      <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="callback_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="callback_action" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="ItemFactoryClass"
+            c:type="GtkItemFactoryClass"
+            glib:is-gtype-struct-for="ItemFactory">
+      <field name="object_class">
+        <type name="ObjectClass" c:type="GtkObjectClass"/>
+      </field>
+      <field name="item_ht">
+        <type name="GLib.HashTable" c:type="GHashTable*"/>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ItemFactoryEntry" c:type="GtkItemFactoryEntry">
+      <field name="path" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="accelerator" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="callback" writable="1">
+        <type name="ItemFactoryCallback" c:type="GtkItemFactoryCallback"/>
+      </field>
+      <field name="callback_action" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="item_type" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="extra_data" writable="1">
+        <type name="any" c:type="gconstpointer"/>
+      </field>
+    </record>
+    <record name="ItemFactoryItem" c:type="GtkItemFactoryItem">
+      <field name="path" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="widgets" writable="1">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+    </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="int" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="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"/>
+      <constructor name="new"
+                   c:identifier="gtk_label_new"
+                   doc="Creates a new label with the given text inside it. You can
+pass %NULL to get an empty label widget.">
+        <return-value transfer-ownership="full">
+          <type name="Label" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_mnemonic"
+                   c:identifier="gtk_label_new_with_mnemonic"
+                   doc="mnemonic character
+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
+&apos;__&apos; (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.">
+        <return-value transfer-ownership="full">
+          <type name="Label" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_text"
+              c:identifier="gtk_label_set_text"
+              doc="Sets the text within the #GtkLabel widget. It overwrites any text that
+was there before.
+This will also clear any previously set mnemonic accelerators.">
+        <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="get_text"
+              c:identifier="gtk_label_get_text"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_attributes"
+              c:identifier="gtk_label_set_attributes"
+              doc="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;">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attrs" transfer-ownership="none">
+            <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attributes"
+              c:identifier="gtk_label_get_attributes"
+              doc="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)).">
+        <return-value transfer-ownership="full">
+          <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+        </return-value>
+      </method>
+      <method name="set_label"
+              c:identifier="gtk_label_set_label"
+              doc="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&quot; and
+#GtkLabel:use-markup properties.">
+        <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="get_label"
+              c:identifier="gtk_label_get_label"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_markup"
+              c:identifier="gtk_label_set_markup"
+              doc="Parses @str which is marked up with the &lt;link
+linkend=&quot;PangoMarkupFormat&quot;&gt;Pango text markup language&lt;/link&gt;, setting the
+label&apos;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 (&quot;&amp;lt;span style=\&quot;italic\&quot;&amp;gt;&amp;percnt;s&amp;lt;/span&amp;gt;&quot;, str);
+gtk_label_set_markup (GTK_LABEL (label), markup);
+g_free (markup);
+]|">
+        <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_use_markup"
+              c:identifier="gtk_label_set_use_markup"
+              doc="Sets whether the text of the label contains markup in &lt;link
+linkend=&quot;PangoMarkupFormat&quot;&gt;Pango&apos;s text markup
+language&lt;/link&gt;. See gtk_label_set_markup().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_markup"
+              c:identifier="gtk_label_get_use_markup"
+              doc="Returns whether the label&apos;s text is interpreted as marked up with
+the &lt;link linkend=&quot;PangoMarkupFormat&quot;&gt;Pango text markup
+language&lt;/link&gt;. See gtk_label_set_use_markup ().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_use_underline"
+              c:identifier="gtk_label_set_use_underline"
+              doc="If true, an underline in the text indicates the next character should be
+used for the mnemonic accelerator key.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_underline"
+              c:identifier="gtk_label_get_use_underline"
+              doc="Returns whether an embedded underline in the label indicates a
+mnemonic. See gtk_label_set_use_underline().
+the mnemonic accelerator keys.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_markup_with_mnemonic"
+              c:identifier="gtk_label_set_markup_with_mnemonic"
+              doc="Parses @str which is marked up with the &lt;link linkend=&quot;PangoMarkupFormat&quot;&gt;Pango text markup language&lt;/link&gt;,
+setting the label&apos;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().">
+        <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="get_mnemonic_keyval"
+              c:identifier="gtk_label_get_mnemonic_keyval"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_mnemonic_widget"
+              c:identifier="gtk_label_set_mnemonic_widget"
+              doc="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 &quot;use_underline&quot; 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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the target #GtkWidget">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mnemonic_widget"
+              c:identifier="gtk_label_get_mnemonic_widget"
+              doc="Retrieves the target of the mnemonic (keyboard shortcut) of this
+label. See gtk_label_set_mnemonic_widget().
+has been set and the default algorithm will be used.">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_text_with_mnemonic"
+              c:identifier="gtk_label_set_text_with_mnemonic"
+              doc="Sets the label&apos;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().">
+        <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_justify"
+              c:identifier="gtk_label_set_justify"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="jtype" transfer-ownership="none">
+            <type name="Justification" c:type="GtkJustification"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_justify"
+              c:identifier="gtk_label_get_justify"
+              doc="Returns the justification of the label. See gtk_label_set_justify().">
+        <return-value transfer-ownership="full">
+          <type name="Justification" c:type="GtkJustification"/>
+        </return-value>
+      </method>
+      <method name="set_ellipsize"
+              c:identifier="gtk_label_set_ellipsize"
+              doc="if there is not enough space to render the entire string."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ellipsize"
+              c:identifier="gtk_label_get_ellipsize"
+              doc="Returns the ellipsizing position of the label. See gtk_label_set_ellipsize()."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+        </return-value>
+      </method>
+      <method name="set_width_chars"
+              c:identifier="gtk_label_set_width_chars"
+              doc="Sets the desired width in characters of @label to @n_chars."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_chars" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width_chars"
+              c:identifier="gtk_label_get_width_chars"
+              doc="Retrieves the desired width of @label, in characters. See
+gtk_label_set_width_chars()."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_max_width_chars"
+              c:identifier="gtk_label_set_max_width_chars"
+              doc="Sets the desired maximum width in characters of @label to @n_chars."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_chars" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_max_width_chars"
+              c:identifier="gtk_label_get_max_width_chars"
+              doc="Retrieves the desired maximum width of @label, in characters. See
+gtk_label_set_width_chars()."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </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_line_wrap"
+              c:identifier="gtk_label_set_line_wrap"
+              doc="Toggles line wrapping within the #GtkLabel widget. %TRUE makes it break
+lines if text exceeds the widget&apos;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&apos;s width, because GTK+ widgets
+conceptually can&apos;t make their requisition depend on the parent
+container&apos;s size. For a label that wraps at a specific position,
+set the label&apos;s width using gtk_widget_set_size_request().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrap" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line_wrap"
+              c:identifier="gtk_label_get_line_wrap"
+              doc="Returns whether lines in the label are automatically wrapped.
+See gtk_label_set_line_wrap().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_line_wrap_mode"
+              c:identifier="gtk_label_set_line_wrap_mode"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrap_mode" transfer-ownership="none">
+            <type name="Pango.WrapMode" c:type="PangoWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line_wrap_mode"
+              c:identifier="gtk_label_get_line_wrap_mode"
+              doc="Returns line wrap mode used by the label. See gtk_label_set_line_wrap_mode()."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="Pango.WrapMode" c:type="PangoWrapMode"/>
+        </return-value>
+      </method>
+      <method name="set_selectable"
+              c:identifier="gtk_label_set_selectable"
+              doc="Selectable labels allow the user to select text from the label, for
+copy-and-paste.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selectable"
+              c:identifier="gtk_label_get_selectable"
+              doc="Gets the value set by gtk_label_set_selectable().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_angle"
+              c:identifier="gtk_label_set_angle"
+              doc="the horizontal, in degrees, measured counterclockwise
+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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="angle" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_angle"
+              c:identifier="gtk_label_get_angle"
+              doc="Gets the angle of rotation for the label. See
+gtk_label_set_angle()."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="select_region"
+              c:identifier="gtk_label_select_region"
+              doc="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">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selection_bounds"
+              c:identifier="gtk_label_get_selection_bounds"
+              doc="Gets the selected range of characters in the label, returning %TRUE
+if there&apos;s a selection.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="end" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layout"
+              c:identifier="gtk_label_get_layout"
+              doc="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.">
+        <return-value transfer-ownership="none"
+                      doc="the #PangoLayout for this label">
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </return-value>
+      </method>
+      <method name="get_layout_offsets"
+              c:identifier="gtk_label_get_layout_offsets"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store X offset of layout, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store Y offset of layout, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_single_line_mode"
+              c:identifier="gtk_label_set_single_line_mode"
+              doc="Sets whether the label is in single line mode."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="single_line_mode" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_single_line_mode"
+              c:identifier="gtk_label_get_single_line_mode"
+              doc="Returns whether the label is in single line mode."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_current_uri"
+              c:identifier="gtk_label_get_current_uri"
+              doc="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."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_track_visited_links"
+              c:identifier="gtk_label_set_track_visited_links"
+              doc="Sets whether the label should keep track of clicked
+links (and use a different color for them)."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track_links" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_track_visited_links"
+              c:identifier="gtk_label_get_track_visited_links"
+              doc="Returns whether the label is currently keeping track
+of clicked links."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get" c:identifier="gtk_label_get">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_uline" c:identifier="gtk_label_parse_uline">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="angle"
+                version="2.6"
+                writable="1"
+                doc="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.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="attributes" writable="1">
+        <type name="Pango.AttrList" c:type="PangoAttrList"/>
+      </property>
+      <property name="cursor-position">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="ellipsize"
+                version="2.6"
+                writable="1"
+                doc="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 &quot;...&quot;. In particular, this
+means that ellipsizing labels do not work well in notebook tabs, unless
+the tab&apos;s #GtkNotebook:tab-expand property is set to %TRUE. Other ways
+to set a label&apos;s width are gtk_widget_set_size_request() and
+gtk_label_set_width_chars().">
+        <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+      </property>
+      <property name="justify" writable="1">
+        <type name="Justification" c:type="GtkJustification"/>
+      </property>
+      <property name="label" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="max-width-chars"
+                version="2.6"
+                writable="1"
+                doc="The desired maximum width of the label, in characters. If this property
+is set to -1, the width will be calculated automatically, otherwise the
+label will request space for no more than the requested number of
+characters. If the #GtkLabel:width-chars property is set to a positive
+value, then the &quot;max-width-chars&quot; property is ignored.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="mnemonic-keyval">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="mnemonic-widget" writable="1">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <property name="pattern" readable="0" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="selectable" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="selection-bound">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="single-line-mode"
+                version="2.6"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="track-visited-links"
+                version="2.18"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="use-markup" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="use-underline" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="width-chars"
+                version="2.6"
+                writable="1"
+                doc="The desired width of the label, in characters. If this property is set to
+-1, the width will be calculated automatically, otherwise the label will
+request either 3 characters or the property value, whichever is greater.
+If the &quot;width-chars&quot; property is set to a positive value, then the
+#GtkLabel:max-width-chars property is ignored.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="wrap" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="wrap-mode"
+                version="2.10"
+                writable="1"
+                doc="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.">
+        <type name="Pango.WrapMode" c:type="PangoWrapMode"/>
+      </property>
+      <field name="misc">
+        <type name="Misc" c:type="GtkMisc"/>
+      </field>
+      <field name="label">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="jtype" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="wrap" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="use_underline" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="use_markup" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="ellipsize" bits="3">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="single_line_mode" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="have_transform" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="in_click" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="wrap_mode" bits="3">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="pattern_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="track_links" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="mnemonic_keyval">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="text">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="attrs">
+        <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+      </field>
+      <field name="effective_attrs">
+        <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+      </field>
+      <field name="layout">
+        <type name="Pango.Layout" c:type="PangoLayout*"/>
+      </field>
+      <field name="mnemonic_widget">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="mnemonic_window">
+        <type name="Window" c:type="GtkWindow*"/>
+      </field>
+      <field name="select_info">
+        <type name="LabelSelectionInfo" c:type="GtkLabelSelectionInfo*"/>
+      </field>
+      <glib:signal name="activate-current-link"
+                   doc="A &lt;link linkend=&quot;keybinding-signals&quot;&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."
+                   version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="activate-link"
+                   doc="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()."
+                   version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="copy-clipboard"
+                   doc="The ::copy-clipboard signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="move-cursor"
+                   doc="The ::move-cursor signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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;">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="step" transfer-ownership="none">
+            <type name="MovementStep" c:type="GtkMovementStep"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="extend_selection" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="populate-popup"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="menu" transfer-ownership="none">
+            <type name="Menu" c:type="GtkMenu"/>
+          </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" c:type="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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="extend_selection" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy_clipboard">
+        <callback name="copy_clipboard" c:type="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" c:type="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" c:type="activate_link">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="LabelSelectionInfo" c:type="GtkLabelSelectionInfo">
+    </record>
+    <class name="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"/>
+      <constructor name="new"
+                   c:identifier="gtk_layout_new"
+                   doc="Creates a new #GtkLayout. Unless you have a specific adjustment
+you&apos;d like the layout to use for scrolling, pass %NULL for">
+        <return-value transfer-ownership="full">
+          <type name="Layout" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="hadjustment"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="horizontal scroll adjustment, or %NULL">
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="vadjustment"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="vertical scroll adjustment, or %NULL">
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_bin_window"
+              c:identifier="gtk_layout_get_bin_window"
+              doc="Retrieve the bin window of the layout used for drawing operations."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="put"
+              c:identifier="gtk_layout_put"
+              doc="Adds @child_widget to @layout, at position (@x,@y).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </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>
+        </parameters>
+      </method>
+      <method name="move"
+              c:identifier="gtk_layout_move"
+              doc="Moves a current child of @layout to a new position.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </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>
+        </parameters>
+      </method>
+      <method name="set_size"
+              c:identifier="gtk_layout_set_size"
+              doc="Sets the size of the scrollable area of the layout.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size"
+              c:identifier="gtk_layout_get_size"
+              doc="Gets the size that has been set on the layout, and that determines
+the total extents of the layout&apos;s scrollbar area. See
+gtk_layout_set_size ().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the width set on @layout, or %NULL">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the height set on @layout, or %NULL">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_hadjustment"
+              c:identifier="gtk_layout_get_hadjustment"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_vadjustment"
+              c:identifier="gtk_layout_get_vadjustment"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="set_hadjustment"
+              c:identifier="gtk_layout_set_hadjustment"
+              doc="Sets the horizontal scroll adjustment for the layout.
+See #GtkScrolledWindow, #GtkScrollbar, #GtkAdjustment for details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="new scroll adjustment">
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_vadjustment"
+              c:identifier="gtk_layout_set_vadjustment"
+              doc="Sets the vertical scroll adjustment for the layout.
+See #GtkScrolledWindow, #GtkScrollbar, #GtkAdjustment for details.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="new scroll adjustment">
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="freeze"
+              c:identifier="gtk_layout_freeze"
+              doc="This is a deprecated function, it doesn&apos;t do anything useful.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="thaw"
+              c:identifier="gtk_layout_thaw"
+              doc="This is a deprecated function, it doesn&apos;t do anything useful.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="hadjustment" writable="1">
+        <type name="Adjustment" c:type="GtkAdjustment"/>
+      </property>
+      <property name="height" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="vadjustment" writable="1">
+        <type name="Adjustment" c:type="GtkAdjustment"/>
+      </property>
+      <property name="width" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="children">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="width">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="height">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="hadjustment">
+        <type name="Adjustment" c:type="GtkAdjustment*"/>
+      </field>
+      <field name="vadjustment">
+        <type name="Adjustment" c:type="GtkAdjustment*"/>
+      </field>
+      <field name="bin_window">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="visibility">
+        <type name="Gdk.VisibilityState" c:type="GdkVisibilityState"/>
+      </field>
+      <field name="scroll_x">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="scroll_y">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="freeze_count">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="set-scroll-adjustments">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Adjustment" c:type="GtkAdjustment"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="Adjustment" c:type="GtkAdjustment"/>
+          </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"
+                  c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="LinkButton"
+           c:type="GtkLinkButton"
+           parent="Button"
+           glib:type-name="GtkLinkButton"
+           glib:get-type="gtk_link_button_get_type"
+           glib:type-struct="LinkButtonClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_link_button_new"
+                   doc="Creates a new #GtkLinkButton with the URI as its text."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="LinkButton" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_link_button_new_with_label"
+                   doc="Creates a new #GtkLinkButton containing a label."
+                   version="2.10">
+        <return-value transfer-ownership="none"
+                      doc="a new link button widget.">
+          <type name="LinkButton" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="label"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the text of the button">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="set_uri_hook"
+                c:identifier="gtk_link_button_set_uri_hook"
+                doc="Sets @func as the function that should be invoked every time a user clicks
+a #GtkLinkButton. This function is called before every callback registered
+for the &quot;clicked&quot; signal.
+If no uri hook has been set, GTK+ defaults to calling gtk_show_uri()."
+                version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="LinkButtonUriFunc" c:type="GtkLinkButtonUriFunc"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="notified"
+                     closure="1"
+                     destroy="2"
+                     doc="a function called each time a #GtkLinkButton is clicked, or %NULL">
+            <type name="LinkButtonUriFunc" c:type="GtkLinkButtonUriFunc"/>
+          </parameter>
+          <parameter name="data"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="user data to be passed to @func, or %NULL">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="call"
+                     doc="a #GDestroyNotify that gets called when @data is no longer needed, or %NULL">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="get_uri"
+              c:identifier="gtk_link_button_get_uri"
+              doc="Retrieves the URI set using gtk_link_button_set_uri().
+and should not be modified or freed."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_uri"
+              c:identifier="gtk_link_button_set_uri"
+              doc="Sets @uri as the URI where the #GtkLinkButton points. As a side-effect
+this unsets the &apos;visited&apos; state of the button."
+              version="2.10">
+        <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>
+      <method name="get_visited"
+              c:identifier="gtk_link_button_get_visited"
+              doc="Retrieves the &apos;visited&apos; 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 &apos;visited&apos; state is unset again.
+The state may also be changed using gtk_link_button_set_visited()."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_visited"
+              c:identifier="gtk_link_button_set_visited"
+              doc="Sets the &apos;visited&apos; state of the URI where the #GtkLinkButton
+points.  See gtk_link_button_get_visited() for more details."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visited" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="uri" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="visited" writable="1">
+        <type name="boolean" c:type="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">
+        <callback name="gtk_padding1" c:type="_gtk_padding1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_padding2">
+        <callback name="gtk_padding2" c:type="_gtk_padding2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_padding3">
+        <callback name="gtk_padding3" c:type="_gtk_padding3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_padding4">
+        <callback name="gtk_padding4" c:type="_gtk_padding4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="LinkButtonPrivate" c:type="GtkLinkButtonPrivate">
+    </record>
+    <callback name="LinkButtonUriFunc" c:type="GtkLinkButtonUriFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="button" transfer-ownership="none">
+          <type name="LinkButton" c:type="GtkLinkButton*"/>
+        </parameter>
+        <parameter name="link_" 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>
+    <class name="List"
+           c:type="GtkList"
+           parent="Container"
+           glib:type-name="GtkList"
+           glib:get-type="gtk_list_get_type"
+           glib:type-struct="ListClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_list_new">
+        <return-value transfer-ownership="full">
+          <type name="List" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="insert_items" c:identifier="gtk_list_insert_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*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_items" c:identifier="gtk_list_append_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*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend_items" c:identifier="gtk_list_prepend_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*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_items" c:identifier="gtk_list_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*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_items_no_unref"
+              c:identifier="gtk_list_remove_items_no_unref">
+        <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*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_items" c:identifier="gtk_list_clear_items">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="select_item" c:identifier="gtk_list_select_item">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect_item" c:identifier="gtk_list_unselect_item">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_child" c:identifier="gtk_list_select_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>
+        </parameters>
+      </method>
+      <method name="unselect_child" c:identifier="gtk_list_unselect_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>
+        </parameters>
+      </method>
+      <method name="child_position" c:identifier="gtk_list_child_position">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_selection_mode"
+              c:identifier="gtk_list_set_selection_mode">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="SelectionMode" c:type="GtkSelectionMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="extend_selection" c:identifier="gtk_list_extend_selection">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scroll_type" transfer-ownership="none">
+            <type name="ScrollType" c:type="GtkScrollType"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="auto_start_selection" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="start_selection" c:identifier="gtk_list_start_selection">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="end_selection" c:identifier="gtk_list_end_selection">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="select_all" c:identifier="gtk_list_select_all">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unselect_all" c:identifier="gtk_list_unselect_all">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="scroll_horizontal"
+              c:identifier="gtk_list_scroll_horizontal">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scroll_type" transfer-ownership="none">
+            <type name="ScrollType" c:type="GtkScrollType"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scroll_vertical" c:identifier="gtk_list_scroll_vertical">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scroll_type" transfer-ownership="none">
+            <type name="ScrollType" c:type="GtkScrollType"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="toggle_add_mode" c:identifier="gtk_list_toggle_add_mode">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="toggle_focus_row" c:identifier="gtk_list_toggle_focus_row">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="toggle_row" c:identifier="gtk_list_toggle_row">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="undo_selection" c:identifier="gtk_list_undo_selection">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="end_drag_selection"
+              c:identifier="gtk_list_end_drag_selection">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="selection-mode" writable="1">
+        <type name="SelectionMode" c:type="GtkSelectionMode"/>
+      </property>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="children">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="selection">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="undo_selection">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="undo_unselection">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="last_focus_child">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="undo_focus_child">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="htimer">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="vtimer">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="anchor">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="drag_pos">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="anchor_state">
+        <type name="StateType" c:type="GtkStateType"/>
+      </field>
+      <field name="selection_mode" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="drag_selection" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="add_mode" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="select-child">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="selection-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unselect-child">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ListClass"
+            c:type="GtkListClass"
+            glib:is-gtype-struct-for="List">
+      <field name="parent_class">
+        <type name="ContainerClass" c:type="GtkContainerClass"/>
+      </field>
+      <field name="selection_changed">
+        <callback name="selection_changed" c:type="selection_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="list" transfer-ownership="none">
+              <type name="List" c:type="GtkList*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_child">
+        <callback name="select_child" c:type="select_child">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="list" transfer-ownership="none">
+              <type name="List" c:type="GtkList*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unselect_child">
+        <callback name="unselect_child" c:type="unselect_child">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="list" transfer-ownership="none">
+              <type name="List" c:type="GtkList*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="ListItem"
+           c:type="GtkListItem"
+           parent="Item"
+           glib:type-name="GtkListItem"
+           glib:get-type="gtk_list_item_get_type"
+           glib:type-struct="ListItemClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_list_item_new">
+        <return-value transfer-ownership="full">
+          <type name="ListItem" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_list_item_new_with_label">
+        <return-value transfer-ownership="full">
+          <type name="ListItem" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="select" c:identifier="gtk_list_item_select">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="deselect" c:identifier="gtk_list_item_deselect">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="item">
+        <type name="Item" c:type="GtkItem"/>
+      </field>
+      <glib:signal name="end-selection">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="extend-selection">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="ScrollType" c:type="GtkScrollType"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="scroll-horizontal">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="ScrollType" c:type="GtkScrollType"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="scroll-vertical">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="ScrollType" c:type="GtkScrollType"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="select-all">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="start-selection">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="toggle-add-mode">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="toggle-focus-row">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="undo-selection">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unselect-all">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="ListItemClass"
+            c:type="GtkListItemClass"
+            glib:is-gtype-struct-for="ListItem">
+      <field name="parent_class">
+        <type name="ItemClass" c:type="GtkItemClass"/>
+      </field>
+      <field name="toggle_focus_row">
+        <callback name="toggle_focus_row" c:type="toggle_focus_row">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="list_item" transfer-ownership="none">
+              <type name="ListItem" c:type="GtkListItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_all">
+        <callback name="select_all" c:type="select_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="list_item" transfer-ownership="none">
+              <type name="ListItem" c:type="GtkListItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unselect_all">
+        <callback name="unselect_all" c:type="unselect_all">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="list_item" transfer-ownership="none">
+              <type name="ListItem" c:type="GtkListItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="undo_selection">
+        <callback name="undo_selection" c:type="undo_selection">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="list_item" transfer-ownership="none">
+              <type name="ListItem" c:type="GtkListItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="start_selection">
+        <callback name="start_selection" c:type="start_selection">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="list_item" transfer-ownership="none">
+              <type name="ListItem" c:type="GtkListItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="end_selection">
+        <callback name="end_selection" c:type="end_selection">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="list_item" transfer-ownership="none">
+              <type name="ListItem" c:type="GtkListItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="extend_selection">
+        <callback name="extend_selection" c:type="extend_selection">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="list_item" transfer-ownership="none">
+              <type name="ListItem" c:type="GtkListItem*"/>
+            </parameter>
+            <parameter name="scroll_type" transfer-ownership="none">
+              <type name="ScrollType" c:type="GtkScrollType"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <type name="float" c:type="gfloat"/>
+            </parameter>
+            <parameter name="auto_start_selection" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="scroll_horizontal">
+        <callback name="scroll_horizontal" c:type="scroll_horizontal">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="list_item" transfer-ownership="none">
+              <type name="ListItem" c:type="GtkListItem*"/>
+            </parameter>
+            <parameter name="scroll_type" transfer-ownership="none">
+              <type name="ScrollType" c:type="GtkScrollType"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <type name="float" c:type="gfloat"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="scroll_vertical">
+        <callback name="scroll_vertical" c:type="scroll_vertical">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="list_item" transfer-ownership="none">
+              <type name="ListItem" c:type="GtkListItem*"/>
+            </parameter>
+            <parameter name="scroll_type" transfer-ownership="none">
+              <type name="ScrollType" c:type="GtkScrollType"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <type name="float" c:type="gfloat"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="toggle_add_mode">
+        <callback name="toggle_add_mode" c:type="toggle_add_mode">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="list_item" transfer-ownership="none">
+              <type name="ListItem" c:type="GtkListItem*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="ListStore"
+           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"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="ListStore" c:type="GtkListStore*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="newv"
+                   c:identifier="gtk_list_store_newv"
+                   doc="Non-vararg creation function.  Used primarily by language bindings.">
+        <return-value transfer-ownership="none" doc="a new #GtkListStore">
+          <type name="ListStore" c:type="GtkListStore*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="types"
+                     transfer-ownership="none"
+                     doc="an array of #GType types for the columns, from first to last">
+            <array length="0" c:type="GType*">
+              <type name="GType"/>
+            </array>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_column_types"
+              c:identifier="gtk_list_store_set_column_types"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="types"
+                     transfer-ownership="none"
+                     doc="An array length n of #GTypes">
+            <array length="1" c:type="GType*">
+              <type name="GType"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value"
+              c:identifier="gtk_list_store_set_value"
+              doc="Sets the data in the cell specified by @iter and @column.
+The type of @value must be convertible to the type of the
+column.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="gtk_list_store_set"
+              doc="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 &quot;Foo&quot;, you would write &lt;literal&gt;gtk_list_store_set (store, iter,
+0, &quot;Foo&quot;, -1)&lt;/literal&gt;.
+The value will be copied or referenced by the store if appropriate.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_valuesv"
+              c:identifier="gtk_list_store_set_valuesv"
+              doc="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."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="columns"
+                     transfer-ownership="none"
+                     doc="an array of column numbers">
+            <array length="4" c:type="gint*">
+              <type name="int"/>
+            </array>
+          </parameter>
+          <parameter name="values"
+                     transfer-ownership="none"
+                     doc="an array of GValues">
+            <array length="4" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+          <parameter name="n_values" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="gtk_list_store_remove"
+              doc="Removes the given row from the list store.  After being removed,
+to the last row in @list_store.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert"
+              c:identifier="gtk_list_store_insert"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_before"
+              c:identifier="gtk_list_store_insert_before"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="sibling"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A valid #GtkTreeIter, or %NULL">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_after"
+              c:identifier="gtk_list_store_insert_after"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="sibling"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A valid #GtkTreeIter, or %NULL">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_with_values"
+              c:identifier="gtk_list_store_insert_with_values"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="An unset #GtkTreeIter to set to the new row, or %NULL.">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" 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"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="An unset #GtkTreeIter to set to the new row, or %NULL.">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="columns" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="n_values" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend"
+              c:identifier="gtk_list_store_prepend"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append"
+              c:identifier="gtk_list_store_append"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear"
+              c:identifier="gtk_list_store_clear"
+              doc="Removes all rows from the list store.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="iter_is_valid"
+              c:identifier="gtk_list_store_iter_is_valid"
+              doc="&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."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reorder"
+              c:identifier="gtk_list_store_reorder"
+              doc="to its old position before the re-ordering,
+i.e. @new_order&lt;literal&gt;[newpos] = oldpos&lt;/literal&gt;.
+Reorders @store to follow the order indicated by @new_order. Note that
+this function only works with unsorted stores."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_order"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="swap"
+              c:identifier="gtk_list_store_swap"
+              doc="Swaps @a and @b in @store. Note that this function only works with
+unsorted stores."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+        </parameters>
+      </method>
+      <method name="move_after"
+              c:identifier="gtk_list_store_move_after"
+              doc="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."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #GtkTreeIter or %NULL.">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_before"
+              c:identifier="gtk_list_store_move_before"
+              doc="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."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #GtkTreeIter, or %NULL.">
+            <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="int" c:type="gint"/>
+      </field>
+      <field name="seq">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="_gtk_reserved1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="sort_list">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="n_columns">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="sort_column_id">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="order">
+        <type name="SortType" c:type="GtkSortType"/>
+      </field>
+      <field name="column_headers">
+        <type name="any" c:type="GType*"/>
+      </field>
+      <field name="length">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="default_sort_func">
+        <type name="TreeIterCompareFunc" c:type="GtkTreeIterCompareFunc"/>
+      </field>
+      <field name="default_sort_data">
+        <type name="any" 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="uint" c:type="guint"/>
+      </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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <constant name="MAJOR_VERSION" value="2">
+      <type name="int"/>
+    </constant>
+    <constant name="MAX_COMPOSE_LEN" value="7">
+      <type name="int"/>
+    </constant>
+    <constant name="MICRO_VERSION" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="MINOR_VERSION" value="20">
+      <type name="int"/>
+    </constant>
+    <enumeration name="MatchType"
+                 glib:type-name="GtkMatchType"
+                 glib:get-type="gtk_match_type_get_type"
+                 c:type="GtkMatchType">
+      <member name="all"
+              value="0"
+              c:identifier="GTK_MATCH_ALL"
+              glib:nick="all"/>
+      <member name="all_tail"
+              value="1"
+              c:identifier="GTK_MATCH_ALL_TAIL"
+              glib:nick="all-tail"/>
+      <member name="head"
+              value="2"
+              c:identifier="GTK_MATCH_HEAD"
+              glib:nick="head"/>
+      <member name="tail"
+              value="3"
+              c:identifier="GTK_MATCH_TAIL"
+              glib:nick="tail"/>
+      <member name="exact"
+              value="4"
+              c:identifier="GTK_MATCH_EXACT"
+              glib:nick="exact"/>
+      <member name="last"
+              value="5"
+              c:identifier="GTK_MATCH_LAST"
+              glib:nick="last"/>
+    </enumeration>
+    <class name="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"/>
+      <constructor name="new" c:identifier="gtk_menu_new">
+        <return-value transfer-ownership="full">
+          <type name="Menu" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <function name="get_for_attach_widget"
+                c:identifier="gtk_menu_get_for_attach_widget"
+                doc="Returns a list of the menus which are attached to this widget.
+This list is owned by GTK+ and must not be modified."
+                version="2.6">
+        <return-value transfer-ownership="none"
+                      doc="the list of menus attached to his widget.">
+          <type name="GLib.List" c:type="GList*">
+            <type name="Widget"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="popup"
+              c:identifier="gtk_menu_popup"
+              doc="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.">
+        <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="the menu shell containing the triggering menu item, or %NULL">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="parent_menu_item"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the menu item whose activation triggered the popup, or %NULL">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="call"
+                     closure="4"
+                     doc="a user supplied function used to position the menu, or %NULL">
+            <type name="MenuPositionFunc" c:type="GtkMenuPositionFunc"/>
+          </parameter>
+          <parameter name="data"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="user supplied data to be passed to @func.">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="button" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="activate_time" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </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="popdown" c:identifier="gtk_menu_popdown">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_active" c:identifier="gtk_menu_get_active">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </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="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </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="get_accel_group" c:identifier="gtk_menu_get_accel_group">
+        <return-value transfer-ownership="full">
+          <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+        </return-value>
+      </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="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="attach_to_widget" c:identifier="gtk_menu_attach_to_widget">
+        <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" scope="call">
+            <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_attach_widget"
+              c:identifier="gtk_menu_get_attach_widget">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </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="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tearoff_state"
+              c:identifier="gtk_menu_get_tearoff_state"
+              doc="Returns whether the menu is torn off. See
+gtk_menu_set_tearoff_state ().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_title"
+              c:identifier="gtk_menu_set_title"
+              doc="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&apos;s label.">
+        <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="get_title"
+              c:identifier="gtk_menu_get_title"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </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="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_screen"
+              c:identifier="gtk_menu_set_screen"
+              doc="determined by the widget the menu is attached to.
+Sets the #GdkScreen on which the menu will be displayed."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkScreen, or %NULL if the screen should be">
+            <type name="Gdk.Screen" c:type="GdkScreen*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="attach"
+              c:identifier="gtk_menu_attach"
+              doc="Adds a new #GtkMenuItem to a (table) menu. The number of &apos;cells&apos; 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()."
+              version="2.4">
+        <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="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="right_attach" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="top_attach" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="bottom_attach" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_monitor"
+              c:identifier="gtk_menu_set_monitor"
+              doc="be popped up
+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&apos;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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="monitor_num" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_monitor"
+              c:identifier="gtk_menu_get_monitor"
+              doc="Retrieves the number of the monitor on which to show the menu.
+be popped up or -1, if no monitor has been set"
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_reserve_toggle_size"
+              c:identifier="gtk_menu_set_reserve_toggle_size"
+              doc="Sets whether the menu should reserve space for drawing toggles
+or icons, regardless of their actual presence."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="reserve_toggle_size" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_reserve_toggle_size"
+              c:identifier="gtk_menu_get_reserve_toggle_size"
+              doc="Returns whether the menu reserves space for toggles and
+icons, regardless of their actual presence."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="accel-group"
+                version="2.14"
+                writable="1"
+                doc="The accel group holding accelerators for the menu.">
+        <type name="AccelGroup" c:type="GtkAccelGroup"/>
+      </property>
+      <property name="accel-path"
+                version="2.14"
+                writable="1"
+                doc="An accel path used to conveniently construct accel paths of child items.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="active"
+                version="2.14"
+                writable="1"
+                doc="The index of the currently selected menu item, or -1 if no
+menu item is selected.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="attach-widget"
+                version="2.14"
+                writable="1"
+                doc="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.">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <property name="monitor"
+                version="2.14"
+                writable="1"
+                doc="The monitor the menu will be popped up on.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="reserve-toggle-size"
+                version="2.18"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="tearoff-state"
+                version="2.6"
+                writable="1"
+                doc="A boolean that indicates whether the menu is torn-off.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="tearoff-title" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </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="any" c:type="gpointer"/>
+      </field>
+      <field name="toggle_size">
+        <type name="uint" 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="int" c:type="gint"/>
+      </field>
+      <field name="saved_scroll_offset">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="scroll_step">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="timeout_id">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="navigation_region">
+        <type name="Gdk.Region" c:type="GdkRegion*"/>
+      </field>
+      <field name="navigation_timeout">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="needs_destruction_ref_count" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="torn_off" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="tearoff_active" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scroll_fast" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="upper_arrow_visible" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="lower_arrow_visible" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="upper_arrow_prelight" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="lower_arrow_prelight" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="move-scroll">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="ScrollType" c:type="GtkScrollType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <class name="MenuBar"
+           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"/>
+      <constructor name="new" c:identifier="gtk_menu_bar_new">
+        <return-value transfer-ownership="full">
+          <type name="MenuBar" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_pack_direction"
+              c:identifier="gtk_menu_bar_get_pack_direction"
+              doc="Retrieves the current pack direction of the menubar.
+See gtk_menu_bar_set_pack_direction()."
+              version="2.8">
+        <return-value transfer-ownership="full">
+          <type name="PackDirection" c:type="GtkPackDirection"/>
+        </return-value>
+      </method>
+      <method name="set_pack_direction"
+              c:identifier="gtk_menu_bar_set_pack_direction"
+              doc="Sets how items should be packed inside a menubar."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pack_dir" transfer-ownership="none">
+            <type name="PackDirection" c:type="GtkPackDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_pack_direction"
+              c:identifier="gtk_menu_bar_get_child_pack_direction"
+              doc="Retrieves the current child pack direction of the menubar.
+See gtk_menu_bar_set_child_pack_direction()."
+              version="2.8">
+        <return-value transfer-ownership="full">
+          <type name="PackDirection" c:type="GtkPackDirection"/>
+        </return-value>
+      </method>
+      <method name="set_child_pack_direction"
+              c:identifier="gtk_menu_bar_set_child_pack_direction"
+              doc="Sets how widgets should be packed inside the children of a menubar."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_pack_dir" transfer-ownership="none">
+            <type name="PackDirection" c:type="GtkPackDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="child-pack-direction"
+                version="2.8"
+                writable="1"
+                doc="The child pack direction of the menubar. It determines how
+the widgets contained in child menuitems are arranged.">
+        <type name="PackDirection" c:type="GtkPackDirection"/>
+      </property>
+      <property name="pack-direction"
+                version="2.8"
+                writable="1"
+                doc="The pack direction of the menubar. It determines how
+menuitems are arranged in the menubar.">
+        <type name="PackDirection" c:type="GtkPackDirection"/>
+      </property>
+      <field name="menu_shell">
+        <type name="MenuShell" c:type="GtkMenuShell"/>
+      </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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <callback name="MenuCallback" c:type="GtkMenuCallback">
+      <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="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_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>
+    <record name="MenuEntry" c:type="GtkMenuEntry">
+      <field name="path" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="accelerator" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="callback" writable="1">
+        <type name="MenuCallback" c:type="GtkMenuCallback"/>
+      </field>
+      <field name="callback_data" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="widget" writable="1">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+    </record>
+    <class name="MenuItem"
+           c:type="GtkMenuItem"
+           parent="Item"
+           glib:type-name="GtkMenuItem"
+           glib:get-type="gtk_menu_item_get_type"
+           glib:type-struct="MenuItemClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_menu_item_new">
+        <return-value transfer-ownership="full">
+          <type name="MenuItem" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_menu_item_new_with_label">
+        <return-value transfer-ownership="full">
+          <type name="MenuItem" 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="mnemonic character
+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.">
+        <return-value transfer-ownership="full">
+          <type name="MenuItem" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <virtual-method name="set_label" invoker="set_label">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_label" invoker="get_label">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <method name="set_submenu"
+              c:identifier="gtk_menu_item_set_submenu"
+              doc="Sets or replaces the menu item&apos;s submenu, or removes it when a %NULL
+submenu is passed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="submenu"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the submenu, or %NULL">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_submenu"
+              c:identifier="gtk_menu_item_get_submenu"
+              doc="Gets the submenu underneath this menu item, if any. See
+gtk_menu_item_set_submenu().">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </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="deselect" c:identifier="gtk_menu_item_deselect">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </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="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"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </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="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_right_justified"
+              c:identifier="gtk_menu_item_set_right_justified"
+              doc="far right if added to a menu bar.
+Sets whether the menu item appears justified at the right
+side of a menu bar. This was traditionally done for &quot;Help&quot; 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.)">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="right_justified" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_right_justified"
+              c:identifier="gtk_menu_item_get_right_justified"
+              doc="Gets whether the menu item appears justified at the right
+side of the menu bar.
+far right if added to a menu bar.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </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="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="set_label"
+              c:identifier="gtk_menu_item_set_label"
+              doc="Sets @text on the @menu_item label"
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_label"
+              c:identifier="gtk_menu_item_get_label"
+              doc="Sets @text on the @menu_item label
+string used by the label, and must not be modified."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_use_underline"
+              c:identifier="gtk_menu_item_set_use_underline"
+              doc="If true, an underline in the text indicates the next character should be
+used for the mnemonic accelerator key."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_underline"
+              c:identifier="gtk_menu_item_get_use_underline"
+              doc="Checks if an underline in the text indicates the next character should be
+used for the mnemonic accelerator key.
+the mnemonic accelerator key."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="remove_submenu"
+              c:identifier="gtk_menu_item_remove_submenu"
+              doc="Removes the widget&apos;s submenu.
+should not be used in newly written code. Use
+gtk_menu_item_set_submenu() instead."
+              deprecated="gtk_menu_item_remove_submenu() is deprecated and"
+              deprecated-version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="accel-path"
+                version="2.14"
+                writable="1"
+                doc="Sets the accelerator path of the menu item, through which runtime
+changes of the menu item&apos;s accelerator caused by the user can be
+identified and saved to persistant storage.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="label"
+                version="2.16"
+                writable="1"
+                doc="The text for the child label.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="right-justified"
+                version="2.14"
+                writable="1"
+                doc="Sets whether the menu item appears justified at the right side of a menu bar.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="submenu"
+                version="2.12"
+                writable="1"
+                doc="The submenu attached to the menu item, or NULL if it has none.">
+        <type name="Menu" c:type="GtkMenu"/>
+      </property>
+      <property name="use-underline"
+                version="2.16"
+                writable="1"
+                doc="%TRUE if underlines in the text indicate mnemonics">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="item">
+        <type name="Item" c:type="GtkItem"/>
+      </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="uint16" c:type="guint16"/>
+      </field>
+      <field name="accelerator_width">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="accel_path">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="show_submenu_indicator" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="submenu_placement" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="submenu_direction" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="right_justify" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="timer_from_keypress" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="from_menubar" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="timer">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="activate">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="activate-item">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="toggle-size-allocate">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="toggle-size-request">
+        <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>
+    </class>
+    <record name="MenuItemClass"
+            c:type="GtkMenuItemClass"
+            glib:is-gtype-struct-for="MenuItem">
+      <field name="parent_class">
+        <type name="ItemClass" c:type="GtkItemClass"/>
+      </field>
+      <field name="hide_on_activate" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="activate">
+        <callback name="activate" c:type="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" c:type="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" c:type="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"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="toggle_size_allocate">
+        <callback name="toggle_size_allocate" c:type="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="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_label">
+        <callback name="set_label" c:type="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">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_label">
+        <callback name="get_label" c:type="get_label">
+          <return-value transfer-ownership="none">
+            <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="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <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" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="y" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="push_in" direction="out" transfer-ownership="full">
+          <type name="boolean" c:type="gboolean*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="4">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="MenuShell"
+           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"/>
+      <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>
+      <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="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_popup_delay">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-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="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="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="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </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="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="deselect" c:identifier="gtk_menu_shell_deselect">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </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="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_first"
+              c:identifier="gtk_menu_shell_select_first"
+              doc="menu item, otherwise select nothing if
+the first item isn&apos;t sensitive. This
+should be %FALSE if the menu is being
+popped up initially.
+Select the first visible or selectable child of the menu shell;
+don&apos;t select tearoff items unless the only item is a tearoff
+item."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="search_sensitive" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="cancel"
+              c:identifier="gtk_menu_shell_cancel"
+              doc="Cancels the selection within the menu shell."
+              version="2.4">
+        <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"
+              doc="Returns %TRUE if the menu shell will take the keyboard focus on popup."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_take_focus"
+              c:identifier="gtk_menu_shell_set_take_focus"
+              doc="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&apos;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&apos;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()"
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="take_focus" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="take-focus"
+                version="2.8"
+                writable="1"
+                doc="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().">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="children">
+        <type name="GLib.List" c:type="GList*"/>
+      </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="uint" c:type="guint"/>
+      </field>
+      <field name="activate_time">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="active" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="have_grab" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="have_xgrab" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="ignore_leave" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="menu_flag" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="ignore_enter" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="keyboard_mode" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="activate-current">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="cancel">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cycle-focus">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="DirectionType" c:type="GtkDirectionType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="deactivate">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="move-current">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="MenuDirectionType" c:type="GtkMenuDirectionType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-selected"
+                   doc="The ::move-selected signal is emitted to move the selection to
+another item."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="distance" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="selection-done">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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="uint" c:type="guint"/>
+      </field>
+      <field name="deactivate">
+        <callback name="deactivate" c:type="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" c:type="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" c:type="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" c:type="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="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cancel">
+        <callback name="cancel" c:type="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" c:type="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" c:type="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="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_popup_delay">
+        <callback name="get_popup_delay" c:type="get_popup_delay">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="move_selected">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="MenuToolButton"
+           c:type="GtkMenuToolButton"
+           parent="ToolButton"
+           glib:type-name="GtkMenuToolButton"
+           glib:get-type="gtk_menu_tool_button_get_type"
+           glib:type-struct="MenuToolButtonClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_menu_tool_button_new"
+                   doc="Creates a new #GtkMenuToolButton using @icon_widget as icon and"
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="MenuToolButton" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_widget"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a widget that will be used as icon widget, or %NULL">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="label"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a string that will be used as label, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_stock"
+                   c:identifier="gtk_menu_tool_button_new_from_stock"
+                   doc="Creates a new #GtkMenuToolButton.
+The new #GtkMenuToolButton will contain an icon and label from
+the stock item indicated by @stock_id."
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="MenuToolButton" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_menu"
+              c:identifier="gtk_menu_tool_button_set_menu"
+              doc="Sets the #GtkMenu that is popped up when the user clicks on the arrow.
+If @menu is NULL, the arrow button becomes insensitive."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="menu" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_menu"
+              c:identifier="gtk_menu_tool_button_get_menu"
+              doc="Gets the #GtkMenu associated with #GtkMenuToolButton."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_arrow_tooltip"
+              c:identifier="gtk_menu_tool_button_set_arrow_tooltip"
+              doc="Sets the #GtkTooltips object to be used for arrow button which
+pops up the menu. See gtk_tool_item_set_tooltip() for setting
+a tooltip on the whole #GtkMenuToolButton.
+instead."
+              version="2.6"
+              deprecated="Use gtk_menu_tool_button_set_arrow_tooltip_text()"
+              deprecated-version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tooltips" transfer-ownership="none">
+            <type name="Tooltips" c:type="GtkTooltips*"/>
+          </parameter>
+          <parameter name="tip_text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="text to be used as tooltip text for tool_item">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tip_private"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="text to be used as private tooltip text">
+            <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"
+              doc="Sets the tooltip text to be used as tooltip for the arrow button which
+pops up the menu.  See gtk_tool_item_set_tooltip() for setting a tooltip
+on the whole #GtkMenuToolButton."
+              version="2.12">
+        <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>
+        </parameters>
+      </method>
+      <method name="set_arrow_tooltip_markup"
+              c:identifier="gtk_menu_tool_button_set_arrow_tooltip_markup"
+              doc="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() for setting a
+tooltip on the whole #GtkMenuToolButton."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="menu" writable="1">
+        <type name="Menu" c:type="GtkMenu"/>
+      </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="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="MenuToolButtonPrivate" c:type="GtkMenuToolButtonPrivate">
+    </record>
+    <class name="MessageDialog"
+           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"/>
+      <constructor name="new"
+                   c:identifier="gtk_message_dialog_new"
+                   doc="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 &quot;response&quot;
+signal is emitted with response IDs from #GtkResponseType. See
+#GtkDialog for more details.">
+        <return-value transfer-ownership="none" doc="a new #GtkMessageDialog">
+          <type name="MessageDialog" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="transient parent, or %NULL for none">
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="DialogFlags" c:type="GtkDialogFlags"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="MessageType" c:type="GtkMessageType"/>
+          </parameter>
+          <parameter name="buttons" transfer-ownership="none">
+            <type name="ButtonsType" c:type="GtkButtonsType"/>
+          </parameter>
+          <parameter name="message_format"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="style format string, or %NULL">
+            <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"
+                   doc="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=&quot;PangoMarkupFormat&quot;&gt;Pango text markup language&lt;/link&gt;.
+When the user clicks a button a &quot;response&quot; 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&apos;t pass the markup string either
+as the format (it might contain &apos;%&apos; 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);
+]|"
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="MessageDialog" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="transient parent, or %NULL for none">
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="DialogFlags" c:type="GtkDialogFlags"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="MessageType" c:type="GtkMessageType"/>
+          </parameter>
+          <parameter name="buttons" transfer-ownership="none">
+            <type name="ButtonsType" c:type="GtkButtonsType"/>
+          </parameter>
+          <parameter name="message_format"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="style format string, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_image"
+              c:identifier="gtk_message_dialog_set_image"
+              doc="Sets the dialog&apos;s image to @image."
+              version="2.10">
+        <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="get_image"
+              c:identifier="gtk_message_dialog_get_image"
+              doc="Gets the dialog&apos;s image."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_markup"
+              c:identifier="gtk_message_dialog_set_markup"
+              doc="Sets the text of the message dialog to be @str, which is marked
+up with the &lt;link linkend=&quot;PangoMarkupFormat&quot;&gt;Pango text markup
+language&lt;/link&gt;."
+              version="2.4">
+        <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="format_secondary_text"
+              c:identifier="gtk_message_dialog_format_secondary_text"
+              doc="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."
+              version="2.6">
+        <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="style format string, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="format_secondary_markup"
+              c:identifier="gtk_message_dialog_format_secondary_markup"
+              doc="ink linkend=&quot;PangoMarkupFormat&quot;&gt;Pango markup format&lt;/link&gt;), or %NULL
+Sets the secondary text of the message dialog to be @message_format (with
+printf()-style), which is marked up with the
+&lt;link linkend=&quot;PangoMarkupFormat&quot;&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, &quot;&amp;percnt;s&quot;, msg);
+g_free (msg);
+&lt;/programlisting&gt;&lt;/informalexample&gt;"
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="message_format"
+                     transfer-ownership="none"
+                     doc="style markup string (see">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="buttons" readable="0" writable="1" construct-only="1">
+        <type name="ButtonsType" c:type="GtkButtonsType"/>
+      </property>
+      <property name="image"
+                version="2.10"
+                writable="1"
+                doc="The image for this dialog.">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <property name="message-type"
+                writable="1"
+                construct="1"
+                doc="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.">
+        <type name="MessageType" c:type="GtkMessageType"/>
+      </property>
+      <property name="secondary-text"
+                version="2.10"
+                writable="1"
+                doc="The secondary text of the message dialog.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="secondary-use-markup"
+                version="2.10"
+                writable="1"
+                doc="%TRUE if the secondary text of the dialog includes Pango markup.
+See pango_parse_markup().">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="text"
+                version="2.10"
+                writable="1"
+                doc="The primary text of the message dialog. If the dialog has
+a secondary text, this will appear as the title.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="use-markup"
+                version="2.10"
+                writable="1"
+                doc="%TRUE if the primary text of the dialog includes Pango markup.
+See pango_parse_markup().">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Dialog" c:type="GtkDialog"/>
+      </field>
+      <field name="image">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="label">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="MessageType"
+                 glib:type-name="GtkMessageType"
+                 glib:get-type="gtk_message_type_get_type"
+                 c:type="GtkMessageType">
+      <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: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"/>
+      <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="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_alignment"
+              c:identifier="gtk_misc_get_alignment"
+              doc="Gets the X and Y alignment of the widget within its allocation.
+See gtk_misc_set_alignment().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store X alignment of @misc, or %NULL">
+            <type name="float" c:type="gfloat*"/>
+          </parameter>
+          <parameter name="yalign"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store Y alignment of @misc, or %NULL">
+            <type name="float" 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="int" c:type="gint"/>
+          </parameter>
+          <parameter name="ypad" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_padding"
+              c:identifier="gtk_misc_get_padding"
+              doc="Gets the padding in the X and Y directions of the widget.
+See gtk_misc_set_padding().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xpad"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store padding in the X direction, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="ypad"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store padding in the Y direction, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="xalign" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="xpad" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="yalign" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="ypad" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="xalign">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="yalign">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="xpad">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="ypad">
+        <type name="uint16" c:type="guint16"/>
+      </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>
+    <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" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="argv" transfer-ownership="none">
+          <type name="utf8" c:type="gchar***"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="MountOperation"
+           c:type="GtkMountOperation"
+           doc="This should not be accessed directly. Use the accessor functions below."
+           parent="Gio.MountOperation"
+           glib:type-name="GtkMountOperation"
+           glib:get-type="gtk_mount_operation_get_type"
+           glib:type-struct="MountOperationClass">
+      <constructor name="new"
+                   c:identifier="gtk_mount_operation_new"
+                   doc="Creates a new #GtkMountOperation"
+                   version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="MountOperation" c:type="GMountOperation*"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="transient parent of the window, or %NULL">
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="is_showing"
+              c:identifier="gtk_mount_operation_is_showing"
+              doc="Returns whether the #GtkMountOperation is currently displaying
+a window."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_parent"
+              c:identifier="gtk_mount_operation_set_parent"
+              doc="Sets the transient parent for windows shown by the
+#GtkMountOperation."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="transient parent of the window, or %NULL">
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_parent"
+              c:identifier="gtk_mount_operation_get_parent"
+              doc="Gets the transient parent used by the #GtkMountOperation"
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Window" c:type="GtkWindow*"/>
+        </return-value>
+      </method>
+      <method name="set_screen"
+              c:identifier="gtk_mount_operation_set_screen"
+              doc="Sets the screen to show windows of the #GtkMountOperation on."
+              version="2.14">
+        <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="get_screen"
+              c:identifier="gtk_mount_operation_get_screen"
+              doc="Gets the screen on which windows of the #GtkMountOperation
+will be shown."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <property name="is-showing">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="parent" writable="1">
+        <type name="Window" c:type="GtkWindow"/>
+      </property>
+      <property name="screen" writable="1">
+        <type name="Gdk.Screen" c:type="GdkScreen"/>
+      </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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="MountOperationPrivate" c:type="GtkMountOperationPrivate">
+    </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: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"/>
+      <constructor name="new"
+                   c:identifier="gtk_notebook_new"
+                   doc="Creates a new #GtkNotebook widget with no pages.">
+        <return-value transfer-ownership="full">
+          <type name="Notebook" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <function name="set_window_creation_hook"
+                c:identifier="gtk_notebook_set_window_creation_hook"
+                doc="Installs a global function used to create a window
+when a detached tab is dropped in an empty area."
+                version="2.10">
+        <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="the #GtkNotebookWindowCreationFunc, or %NULL">
+            <type name="NotebookWindowCreationFunc"
+                  c:type="GtkNotebookWindowCreationFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="call"
+                     doc="Destroy notifier for @data, or %NULL">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="insert_page">
+        <return-value transfer-ownership="none">
+          <type name="int" 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="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="append_page"
+              c:identifier="gtk_notebook_append_page"
+              doc="or %NULL to use the default label, &apos;page N&apos;.
+Appends a page to @notebook.
+page in the notebook, or -1 if function fails">
+        <return-value transfer-ownership="none" doc="of the appended">
+          <type name="int" 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"
+                     allow-none="1"
+                     doc="the #GtkWidget to be used as the label for the page,">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_page_menu"
+              c:identifier="gtk_notebook_append_page_menu"
+              doc="or %NULL to use the default label, &apos;page N&apos;.
+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.
+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">
+        <return-value transfer-ownership="none" doc="of the appended">
+          <type name="int" 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"
+                     allow-none="1"
+                     doc="the #GtkWidget to be used as the label for the page,">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="menu_label"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the widget to use as a label for the page-switch">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend_page"
+              c:identifier="gtk_notebook_prepend_page"
+              doc="or %NULL to use the default label, &apos;page N&apos;.
+Prepends a page to @notebook.
+page in the notebook, or -1 if function fails">
+        <return-value transfer-ownership="none" doc="of the prepended">
+          <type name="int" 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"
+                     allow-none="1"
+                     doc="the #GtkWidget to be used as the label for the page,">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend_page_menu"
+              c:identifier="gtk_notebook_prepend_page_menu"
+              doc="or %NULL to use the default label, &apos;page N&apos;.
+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.
+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">
+        <return-value transfer-ownership="none" doc="of the prepended">
+          <type name="int" 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"
+                     allow-none="1"
+                     doc="the #GtkWidget to be used as the label for the page,">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="menu_label"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the widget to use as a label for the page-switch">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_page"
+              c:identifier="gtk_notebook_insert_page"
+              doc="or %NULL to use the default label, &apos;page N&apos;.
+or -1 to append the page after all other pages.
+Insert a page into @notebook at the given position.
+page in the notebook, or -1 if function fails">
+        <return-value transfer-ownership="none" doc="of the inserted">
+          <type name="int" 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"
+                     allow-none="1"
+                     doc="the #GtkWidget to be used as the label for the page,">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="position"
+                     transfer-ownership="none"
+                     doc="at which to insert the page,">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_page_menu"
+              c:identifier="gtk_notebook_insert_page_menu"
+              doc="or %NULL to use the default label, &apos;page N&apos;.
+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.
+or -1 to append the page after all other pages.
+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">
+        <return-value transfer-ownership="none" doc="of the inserted">
+          <type name="int" 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"
+                     allow-none="1"
+                     doc="the #GtkWidget to be used as the label for the page,">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="menu_label"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the widget to use as a label for the page-switch">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="position"
+                     transfer-ownership="none"
+                     doc="at which to insert the page,">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_page"
+              c:identifier="gtk_notebook_remove_page"
+              doc="from 0. If -1, the last page will
+be removed.
+Removes a page from the notebook given its index
+in the notebook.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_num" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_group_id"
+              c:identifier="gtk_notebook_set_group_id"
+              doc="Sets an group identificator for @notebook, notebooks sharing
+the same group identificator will be able to exchange tabs
+via drag and drop. A notebook with group identificator -1 will
+not be able to exchange tabs with any other notebook."
+              version="2.10"
+              deprecated="use gtk_notebook_set_group() instead."
+              deprecated-version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_group_id"
+              c:identifier="gtk_notebook_get_group_id"
+              doc="Gets the current group identificator for @notebook."
+              version="2.10"
+              deprecated="use gtk_notebook_get_group() instead."
+              deprecated-version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_group"
+              c:identifier="gtk_notebook_set_group"
+              doc="Sets a group identificator pointer for @notebook, notebooks sharing
+the same group identificator pointer will be able to exchange tabs
+via drag and drop. A notebook with a %NULL group identificator will
+not be able to exchange tabs with any other notebook."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a pointer to identify the notebook group, or %NULL to unset it">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_group"
+              c:identifier="gtk_notebook_get_group"
+              doc="Gets the current group identificator pointer for @notebook."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="get_current_page"
+              c:identifier="gtk_notebook_get_current_page"
+              doc="Returns the page number of the current page.
+page in the notebook. If the notebook has no pages, then
+-1 will be returned.">
+        <return-value transfer-ownership="none" doc="of the current">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_nth_page"
+              c:identifier="gtk_notebook_get_nth_page"
+              doc="to get the last page.
+Returns the child widget contained in page number @page_num.
+out of bounds.">
+        <return-value transfer-ownership="none"
+                      doc="the child widget, or %NULL if @page_num is">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_num" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_pages"
+              c:identifier="gtk_notebook_get_n_pages"
+              doc="Gets the number of pages in a notebook."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="page_num"
+              c:identifier="gtk_notebook_page_num"
+              doc="Finds the index of the page which contains the given child
+widget.
+-1 if @child is not in the notebook.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_current_page"
+              c:identifier="gtk_notebook_set_current_page"
+              doc="If negative, the last page will be used. If greater
+than the number of pages in the notebook, nothing
+will be done.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_num" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next_page"
+              c:identifier="gtk_notebook_next_page"
+              doc="Switches to the next page. Nothing happens if the current page is
+the last page.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="prev_page"
+              c:identifier="gtk_notebook_prev_page"
+              doc="Switches to the previous page. Nothing happens if the current page
+is the first page.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_show_border"
+              c:identifier="gtk_notebook_set_show_border"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_border" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_show_border"
+              c:identifier="gtk_notebook_get_show_border"
+              doc="Returns whether a bevel will be drawn around the notebook pages. See
+gtk_notebook_set_show_border().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_show_tabs"
+              c:identifier="gtk_notebook_set_show_tabs"
+              doc="Sets whether to show the tabs for the notebook or not.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_tabs" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_show_tabs"
+              c:identifier="gtk_notebook_get_show_tabs"
+              doc="Returns whether the tabs of the notebook are shown. See
+gtk_notebook_set_show_tabs().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_tab_pos"
+              c:identifier="gtk_notebook_set_tab_pos"
+              doc="Sets the edge at which the tabs for switching pages in the
+notebook are drawn.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="PositionType" c:type="GtkPositionType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tab_pos"
+              c:identifier="gtk_notebook_get_tab_pos"
+              doc="Gets the edge at which the tabs for switching pages in the
+notebook are drawn.">
+        <return-value transfer-ownership="full">
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </return-value>
+      </method>
+      <method name="set_homogeneous_tabs"
+              c:identifier="gtk_notebook_set_homogeneous_tabs"
+              doc="Sets whether the tabs must have all the same size or not.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tab_border"
+              c:identifier="gtk_notebook_set_tab_border"
+              doc="Sets the width the border around the tab labels
+in a notebook. This is equivalent to calling
+gtk_notebook_set_tab_hborder (@notebook, @border_width) followed
+by gtk_notebook_set_tab_vborder (@notebook, @border_width).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="border_width" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tab_hborder"
+              c:identifier="gtk_notebook_set_tab_hborder"
+              doc="Sets the width of the horizontal border of tab labels.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tab_hborder" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tab_vborder"
+              c:identifier="gtk_notebook_set_tab_vborder"
+              doc="Sets the width of the vertical border of tab labels.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tab_vborder" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_scrollable"
+              c:identifier="gtk_notebook_set_scrollable"
+              doc="Sets whether the tab label area will have arrows for scrolling if
+there are too many tabs to fit in the area.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scrollable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_scrollable"
+              c:identifier="gtk_notebook_get_scrollable"
+              doc="Returns whether the tab label area has arrows for scrolling. See
+gtk_notebook_set_scrollable().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="popup_enable"
+              c:identifier="gtk_notebook_popup_enable"
+              doc="the tab labels, a menu with all the pages will be popped up.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="popup_disable"
+              c:identifier="gtk_notebook_popup_disable"
+              doc="Disables the popup menu.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_tab_label"
+              c:identifier="gtk_notebook_get_tab_label"
+              doc="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.">
+        <return-value transfer-ownership="none" doc="the tab label">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tab_label"
+              c:identifier="gtk_notebook_set_tab_label"
+              doc="label.
+Changes the tab label for @child. If %NULL is specified
+for @tab_label, then the page will have the label &apos;page N&apos;.">
+        <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="tab_label"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the tab label widget to use, or %NULL for default tab">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tab_label_text"
+              c:identifier="gtk_notebook_set_tab_label_text"
+              doc="Creates a new label and sets it as the tab label for the page
+containing @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="tab_text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tab_label_text"
+              c:identifier="gtk_notebook_get_tab_label_text"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_menu_label"
+              c:identifier="gtk_notebook_get_menu_label"
+              doc="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).">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_menu_label"
+              c:identifier="gtk_notebook_set_menu_label"
+              doc="Changes the menu label for the page containing @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="menu_label"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the menu label, or NULL for default">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_menu_label_text"
+              c:identifier="gtk_notebook_set_menu_label_text"
+              doc="Creates a new label and sets it as the menu label of @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="menu_text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_menu_label_text"
+              c:identifier="gtk_notebook_get_menu_label_text"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="query_tab_label_packing"
+              c:identifier="gtk_notebook_query_tab_label_packing"
+              doc="Query the packing attributes for the tab label of the page
+containing @child.
+#GtkNotebook:tab-fill child properties instead."
+              deprecated="Modify the #GtkNotebook:tab-expand and"
+              deprecated-version="2.20">
+        <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="expand" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="fill" direction="out" transfer-ownership="full">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="pack_type" transfer-ownership="none">
+            <type name="PackType" c:type="GtkPackType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tab_label_packing"
+              c:identifier="gtk_notebook_set_tab_label_packing"
+              doc="Sets the packing parameters for the tab label of the page
+containing @child. See gtk_box_pack_start() for the exact meaning
+of the parameters.
+#GtkNotebook:tab-fill child properties instead.
+Modifying the packing of the tab label is a deprecated feature and
+shouldn&apos;t be done anymore."
+              deprecated="Modify the #GtkNotebook:tab-expand and"
+              deprecated-version="2.20">
+        <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="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="fill" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="pack_type" transfer-ownership="none">
+            <type name="PackType" c:type="GtkPackType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reorder_child"
+              c:identifier="gtk_notebook_reorder_child"
+              doc="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.">
+        <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="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tab_reorderable"
+              c:identifier="gtk_notebook_get_tab_reorderable"
+              doc="Gets whether the tab can be reordered via drag and drop or not."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tab_reorderable"
+              c:identifier="gtk_notebook_set_tab_reorderable"
+              doc="Sets whether the notebook tab can be reordered
+via drag and drop or not."
+              version="2.10">
+        <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="reorderable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tab_detachable"
+              c:identifier="gtk_notebook_get_tab_detachable"
+              doc="Returns whether the tab contents can be detached from @notebook."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tab_detachable"
+              c:identifier="gtk_notebook_set_tab_detachable"
+              doc="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_id ()) to allow automatic tabs
+interchange between them.
+If you want a widget to interact with a notebook through DnD
+destination and accept the target &quot;GTK_NOTEBOOK_TAB&quot;. 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."
+              version="2.10">
+        <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="detachable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_action_widget"
+              c:identifier="gtk_notebook_get_action_widget"
+              doc="Gets one of the action widgets. See gtk_notebook_set_action_widget().
+%NULL when this action widget has not been set"
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pack_type" transfer-ownership="none">
+            <type name="PackType" c:type="GtkPackType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_action_widget"
+              c:identifier="gtk_notebook_set_action_widget"
+              doc="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 &quot;internal&quot; children of the notebook and thus
+not included in the list returned from gtk_container_foreach()."
+              version="2.20">
+        <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="pack_type" transfer-ownership="none">
+            <type name="PackType" c:type="GtkPackType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="enable-popup" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="group"
+                version="2.12"
+                writable="1"
+                doc="Group for tabs drag and drop.">
+        <type name="any" c:type="gpointer"/>
+      </property>
+      <property name="group-id" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="homogeneous" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="page" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="scrollable" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="show-border" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="show-tabs" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="tab-border" readable="0" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="tab-hborder" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="tab-pos" writable="1">
+        <type name="PositionType" c:type="GtkPositionType"/>
+      </property>
+      <property name="tab-vborder" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="cur_page">
+        <type name="NotebookPage" c:type="GtkNotebookPage*"/>
+      </field>
+      <field name="children">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="first_tab">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="focus_tab">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="menu">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="event_window">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="timer">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="tab_hborder">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="tab_vborder">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="show_tabs" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="homogeneous" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="show_border" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="tab_pos" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scrollable" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="in_child" bits="3">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="click_child" bits="3">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="button" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="need_timer" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="child_has_focus" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="have_visible_child" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="focus_out" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_before_previous" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_before_next" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_after_previous" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_after_next" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="change-current-page">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="create-window"
+                   doc="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-id ).
+The default handler uses the global window creation hook,
+if one has been set with gtk_notebook_set_window_creation_hook()."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="Notebook" c:type="GtkNotebook"/>
+        </return-value>
+        <parameters>
+          <parameter name="page" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget"/>
+          </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>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="focus-tab">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="NotebookTab" c:type="GtkNotebookTab"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-focus-out">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="DirectionType" c:type="GtkDirectionType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="page-added"
+                   doc="the ::page-added signal is emitted in the notebook
+right after a page is added to the notebook."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget"/>
+          </parameter>
+          <parameter name="page_num" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="page-removed"
+                   doc="the ::page-removed signal is emitted in the notebook
+right after a page is removed from the notebook."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget"/>
+          </parameter>
+          <parameter name="page_num" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="page-reordered"
+                   doc="the ::page-reordered signal is emitted in the notebook
+right after a page has been reordered."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget"/>
+          </parameter>
+          <parameter name="page_num" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="reorder-tab">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="DirectionType" c:type="GtkDirectionType"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="select-page">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="switch-page">
+        <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>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="uint" c:type="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" c:type="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="NotebookPage" c:type="GtkNotebookPage*"/>
+            </parameter>
+            <parameter name="page_num" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_page">
+        <callback name="select_page" c:type="select_page">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="focus_tab">
+        <callback name="focus_tab" c:type="focus_tab">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="change_current_page">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_focus_out">
+        <callback name="move_focus_out" c:type="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" c:type="reorder_tab">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert_page">
+        <callback name="insert_page" c:type="insert_page">
+          <return-value transfer-ownership="none">
+            <type name="int" 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="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="create_window">
+        <callback name="create_window" c:type="create_window">
+          <return-value transfer-ownership="full">
+            <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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="NotebookPage" c:type="GtkNotebookPage">
+    </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>
+    <callback name="NotebookWindowCreationFunc"
+              c:type="GtkNotebookWindowCreationFunc">
+      <return-value transfer-ownership="full">
+        <type name="Notebook" c:type="GtkNotebook*"/>
+      </return-value>
+      <parameters>
+        <parameter name="source" 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="int" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <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:type="GtkObject"
+           parent="GObject.InitiallyUnowned"
+           abstract="1"
+           glib:type-name="GtkObject"
+           glib:get-type="gtk_object_get_type"
+           glib:type-struct="ObjectClass">
+      <constructor name="new" c:identifier="gtk_object_new">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="GtkObject*"/>
+        </return-value>
+        <parameters>
+          <parameter name="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>
+      </constructor>
+      <function name="add_arg_type" c:identifier="gtk_object_add_arg_type">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="arg_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="arg_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="arg_flags" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="arg_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <virtual-method name="set_arg">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="arg" transfer-ownership="none">
+            <type name="Arg" c:type="GtkArg*"/>
+          </parameter>
+          <parameter name="arg_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_arg">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="arg" transfer-ownership="none">
+            <type name="Arg" c:type="GtkArg*"/>
+          </parameter>
+          <parameter name="arg_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="sink" c:identifier="gtk_object_sink">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="destroy" c:identifier="gtk_object_destroy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="ref" c:identifier="gtk_object_ref">
+        <return-value transfer-ownership="full">
+          <type name="Object" c:type="GtkObject*"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="gtk_object_unref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="weakref" c:identifier="gtk_object_weakref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="notify"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="weakunref" c:identifier="gtk_object_weakunref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="notify"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_data" c:identifier="gtk_object_set_data">
+        <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="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_data_full" c:identifier="gtk_object_set_data_full">
+        <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="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_data" c:identifier="gtk_object_remove_data">
+        <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>
+        </parameters>
+      </method>
+      <method name="get_data" c:identifier="gtk_object_get_data">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_no_notify"
+              c:identifier="gtk_object_remove_no_notify">
+        <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>
+        </parameters>
+      </method>
+      <method name="set_user_data" c:identifier="gtk_object_set_user_data">
+        <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="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_user_data" c:identifier="gtk_object_get_user_data">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="set_data_by_id" c:identifier="gtk_object_set_data_by_id">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data_id" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_data_by_id_full"
+              c:identifier="gtk_object_set_data_by_id_full">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data_id" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_data_by_id" c:identifier="gtk_object_get_data_by_id">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+        <parameters>
+          <parameter name="data_id" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_data_by_id"
+              c:identifier="gtk_object_remove_data_by_id">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data_id" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_no_notify_by_id"
+              c:identifier="gtk_object_remove_no_notify_by_id">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_id" transfer-ownership="none">
+            <type name="GLib.Quark" c:type="GQuark"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get" c:identifier="gtk_object_get">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set" c:identifier="gtk_object_set">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="user-data" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
+      </field>
+      <field name="flags">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <glib:signal name="destroy">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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="set_arg">
+        <callback name="set_arg" c:type="set_arg">
+          <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>
+            <parameter name="arg" transfer-ownership="none">
+              <type name="Arg" c:type="GtkArg*"/>
+            </parameter>
+            <parameter name="arg_id" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_arg">
+        <callback name="get_arg" c:type="get_arg">
+          <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>
+            <parameter name="arg" transfer-ownership="none">
+              <type name="Arg" c:type="GtkArg*"/>
+            </parameter>
+            <parameter name="arg_id" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="destroy">
+        <callback name="destroy" c:type="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"
+              glib:type-name="GtkObjectFlags"
+              glib:get-type="gtk_object_flags_get_type"
+              c:type="GtkObjectFlags">
+      <member name="in_destruction"
+              value="1"
+              c:identifier="GTK_IN_DESTRUCTION"
+              glib:nick="in-destruction"/>
+      <member name="floating"
+              value="2"
+              c:identifier="GTK_FLOATING"
+              glib:nick="floating"/>
+      <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: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"/>
+      <constructor name="new"
+                   c:identifier="gtk_offscreen_window_new"
+                   doc="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."
+                   version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="OffscreenWindow" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_pixmap"
+              c:identifier="gtk_offscreen_window_get_pixmap"
+              doc="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."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+      </method>
+      <method name="get_pixbuf"
+              c:identifier="gtk_offscreen_window_get_pixbuf"
+              doc="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."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </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>
+    <class name="OldEditable"
+           c:type="GtkOldEditable"
+           parent="Widget"
+           abstract="1"
+           glib:type-name="GtkOldEditable"
+           glib:get-type="gtk_old_editable_get_type"
+           glib:type-struct="OldEditableClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Editable"/>
+      <virtual-method name="update_text">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_chars">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_selection">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="end_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_position">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="claim_selection"
+              c:identifier="gtk_old_editable_claim_selection"
+              doc="up ownership
+Claims or gives up ownership of the selection.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="claim" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="time_" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="changed"
+              c:identifier="gtk_old_editable_changed"
+              doc="Emits the ::changed signal on @old_editable.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="editable" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="text-position" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="current_pos">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="selection_start_pos">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="selection_end_pos">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_selection" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="editable" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="visible" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="clipboard_text">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <glib:signal name="activate">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="copy-clipboard">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cut-clipboard">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="kill-char">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="kill-line">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="kill-word">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-cursor">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-page">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-to-column">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-to-row">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-word">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="paste-clipboard">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="set-editable">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="OldEditableClass"
+            c:type="GtkOldEditableClass"
+            glib:is-gtype-struct-for="OldEditable">
+      <field name="parent_class">
+        <type name="WidgetClass" c:type="GtkWidgetClass"/>
+      </field>
+      <field name="activate">
+        <callback name="activate" c:type="activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="OldEditable" c:type="GtkOldEditable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_editable">
+        <callback name="set_editable" c:type="set_editable">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="OldEditable" c:type="GtkOldEditable*"/>
+            </parameter>
+            <parameter name="is_editable" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_cursor">
+        <callback name="move_cursor" c:type="move_cursor">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="OldEditable" c:type="GtkOldEditable*"/>
+            </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>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_word">
+        <callback name="move_word" c:type="move_word">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="OldEditable" c:type="GtkOldEditable*"/>
+            </parameter>
+            <parameter name="n" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_page">
+        <callback name="move_page" c:type="move_page">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="OldEditable" c:type="GtkOldEditable*"/>
+            </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>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_to_row">
+        <callback name="move_to_row" c:type="move_to_row">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="OldEditable" c:type="GtkOldEditable*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_to_column">
+        <callback name="move_to_column" c:type="move_to_column">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="OldEditable" c:type="GtkOldEditable*"/>
+            </parameter>
+            <parameter name="row" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="kill_char">
+        <callback name="kill_char" c:type="kill_char">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="OldEditable" c:type="GtkOldEditable*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="kill_word">
+        <callback name="kill_word" c:type="kill_word">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="OldEditable" c:type="GtkOldEditable*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="kill_line">
+        <callback name="kill_line" c:type="kill_line">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="OldEditable" c:type="GtkOldEditable*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="cut_clipboard">
+        <callback name="cut_clipboard" c:type="cut_clipboard">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="OldEditable" c:type="GtkOldEditable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="copy_clipboard">
+        <callback name="copy_clipboard" c:type="copy_clipboard">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="OldEditable" c:type="GtkOldEditable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="paste_clipboard">
+        <callback name="paste_clipboard" c:type="paste_clipboard">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="OldEditable" c:type="GtkOldEditable*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="update_text">
+        <callback name="update_text" c:type="update_text">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="OldEditable" c:type="GtkOldEditable*"/>
+            </parameter>
+            <parameter name="start_pos" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="end_pos" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_chars">
+        <callback name="get_chars" c:type="get_chars">
+          <return-value transfer-ownership="full">
+            <type name="utf8" c:type="gchar*"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="OldEditable" c:type="GtkOldEditable*"/>
+            </parameter>
+            <parameter name="start_pos" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="end_pos" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_selection">
+        <callback name="set_selection" c:type="set_selection">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="OldEditable" c:type="GtkOldEditable*"/>
+            </parameter>
+            <parameter name="start_pos" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="end_pos" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_position">
+        <callback name="set_position" c:type="set_position">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="editable" transfer-ownership="none">
+              <type name="OldEditable" c:type="GtkOldEditable*"/>
+            </parameter>
+            <parameter name="position" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="OptionMenu"
+           c:type="GtkOptionMenu"
+           parent="Button"
+           glib:type-name="GtkOptionMenu"
+           glib:get-type="gtk_option_menu_get_type"
+           glib:type-struct="OptionMenuClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_option_menu_new">
+        <return-value transfer-ownership="full">
+          <type name="OptionMenu" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_menu" c:identifier="gtk_option_menu_get_menu">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_menu" c:identifier="gtk_option_menu_set_menu">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="menu" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_menu" c:identifier="gtk_option_menu_remove_menu">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_history"
+              c:identifier="gtk_option_menu_get_history"
+              doc="Retrieves the index of the currently selected menu item. The menu
+items are numbered from top to bottom, starting with 0."
+              deprecated="Use #GtkComboBox instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_history" c:identifier="gtk_option_menu_set_history">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="menu" writable="1">
+        <type name="Menu" c:type="GtkMenu"/>
+      </property>
+      <field name="button">
+        <type name="Button" c:type="GtkButton"/>
+      </field>
+      <field name="menu">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="menu_item">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="width">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="height">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <glib:signal name="changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="OptionMenuClass"
+            c:type="GtkOptionMenuClass"
+            glib:is-gtype-struct-for="OptionMenu">
+      <field name="parent_class">
+        <type name="ButtonClass" c:type="GtkButtonClass"/>
+      </field>
+      <field name="changed">
+        <callback name="changed" c:type="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="option_menu" transfer-ownership="none">
+              <type name="OptionMenu" c:type="GtkOptionMenu*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <interface name="Orientable"
+               c:type="GtkOrientable"
+               glib:type-name="GtkOrientable"
+               glib:get-type="gtk_orientable_get_type"
+               glib:type-struct="OrientableIface">
+      <method name="set_orientation"
+              c:identifier="gtk_orientable_set_orientation"
+              doc="Sets the orientation of the @orientable."
+              version="2.16">
+        <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>
+        </parameters>
+      </method>
+      <method name="get_orientation"
+              c:identifier="gtk_orientable_get_orientation"
+              doc="Retrieves the orientation of the @orientable."
+              version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </return-value>
+      </method>
+      <property name="orientation"
+                version="2.16"
+                writable="1"
+                doc="The orientation of the orientable.">
+        <type name="Orientation" c:type="GtkOrientation"/>
+      </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"/>
+    </constant>
+    <constant name="PAPER_NAME_A4" value="iso_a4">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAPER_NAME_A5" value="iso_a5">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAPER_NAME_B5" value="iso_b5">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAPER_NAME_EXECUTIVE" value="na_executive">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAPER_NAME_LEGAL" value="na_legal">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PAPER_NAME_LETTER" value="na_letter">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PARAM_READABLE" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="PARAM_READWRITE" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="PARAM_WRITABLE" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="PATH_PRIO_MASK" value="15">
+      <type name="int"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_COLLATE" value="collate">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_DEFAULT_SOURCE" value="default-source">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_DITHER" value="dither">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_DUPLEX" value="duplex">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_FINISHINGS" value="finishings">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_MEDIA_TYPE" value="media-type">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_NUMBER_UP" value="number-up">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_NUMBER_UP_LAYOUT" value="number-up-layout">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_N_COPIES" value="n-copies">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_ORIENTATION" value="orientation">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_OUTPUT_BIN" value="output-bin">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_OUTPUT_FILE_FORMAT"
+              value="output-file-format">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_OUTPUT_URI" value="output-uri">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_PAGE_RANGES" value="page-ranges">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_PAGE_SET" value="page-set">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_PAPER_FORMAT" value="paper-format">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_PAPER_HEIGHT" value="paper-height">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_PAPER_WIDTH" value="paper-width">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_PRINTER" value="printer">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_PRINTER_LPI" value="printer-lpi">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_PRINT_PAGES" value="print-pages">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_QUALITY" value="quality">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_RESOLUTION" value="resolution">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_RESOLUTION_X" value="resolution-x">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_RESOLUTION_Y" value="resolution-y">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_REVERSE" value="reverse">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_SCALE" value="scale">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_USE_COLOR" value="use-color">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_WIN32_DRIVER_EXTRA"
+              value="win32-driver-extra">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRINT_SETTINGS_WIN32_DRIVER_VERSION"
+              value="win32-driver-version">
+      <type name="utf8"/>
+    </constant>
+    <constant name="PRIORITY_REDRAW" value="20">
+      <type name="int"/>
+    </constant>
+    <constant name="PRIORITY_RESIZE" value="10">
+      <type name="int"/>
+    </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="int" c:type="gint"/>
+      </field>
+      <field name="end" writable="1">
+        <type name="int" 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: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"
+                   doc="Creates a new #GtkPageSetup."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PageSetup" c:type="GtkPageSetup*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_file"
+                   c:identifier="gtk_page_setup_new_from_file"
+                   doc="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()."
+                   version="2.12"
+                   throws="1">
+        <return-value transfer-ownership="full">
+          <type name="PageSetup" c:type="GtkPageSetup*"/>
+        </return-value>
+        <parameters>
+          <parameter name="file_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_key_file"
+                   c:identifier="gtk_page_setup_new_from_key_file"
+                   doc="to use the default name &quot;Page Setup&quot;
+Reads the page setup from the group @group_name in the key file
+page setup, or %NULL if an error occurred."
+                   version="2.12"
+                   throws="1">
+        <return-value transfer-ownership="full">
+          <type name="PageSetup" c:type="GtkPageSetup*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_file" transfer-ownership="none">
+            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
+          </parameter>
+          <parameter name="group_name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the name of the group in the key_file to read, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="gtk_page_setup_copy"
+              doc="Copies a #GtkPageSetup."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PageSetup" c:type="GtkPageSetup*"/>
+        </return-value>
+      </method>
+      <method name="get_orientation"
+              c:identifier="gtk_page_setup_get_orientation"
+              doc="Gets the page orientation of the #GtkPageSetup."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PageOrientation" c:type="GtkPageOrientation"/>
+        </return-value>
+      </method>
+      <method name="set_orientation"
+              c:identifier="gtk_page_setup_set_orientation"
+              doc="Sets the page orientation of the #GtkPageSetup."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <type name="PageOrientation" c:type="GtkPageOrientation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_paper_size"
+              c:identifier="gtk_page_setup_get_paper_size"
+              doc="Gets the paper size of the #GtkPageSetup."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PaperSize" c:type="GtkPaperSize*"/>
+        </return-value>
+      </method>
+      <method name="set_paper_size"
+              c:identifier="gtk_page_setup_set_paper_size"
+              doc="Sets the paper size of the #GtkPageSetup without
+changing the margins. See
+gtk_page_setup_set_paper_size_and_default_margins()."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="PaperSize" c:type="GtkPaperSize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_top_margin"
+              c:identifier="gtk_page_setup_get_top_margin"
+              doc="Gets the top margin in units of @unit."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_top_margin"
+              c:identifier="gtk_page_setup_set_top_margin"
+              doc="Sets the top margin of the #GtkPageSetup."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="margin" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bottom_margin"
+              c:identifier="gtk_page_setup_get_bottom_margin"
+              doc="Gets the bottom margin in units of @unit."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_bottom_margin"
+              c:identifier="gtk_page_setup_set_bottom_margin"
+              doc="Sets the bottom margin of the #GtkPageSetup."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="margin" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_left_margin"
+              c:identifier="gtk_page_setup_get_left_margin"
+              doc="Gets the left margin in units of @unit."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_left_margin"
+              c:identifier="gtk_page_setup_set_left_margin"
+              doc="Sets the left margin of the #GtkPageSetup."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="margin" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_right_margin"
+              c:identifier="gtk_page_setup_get_right_margin"
+              doc="Gets the right margin in units of @unit."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_right_margin"
+              c:identifier="gtk_page_setup_set_right_margin"
+              doc="Sets the right margin of the #GtkPageSetup."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="margin" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_paper_size_and_default_margins"
+              c:identifier="gtk_page_setup_set_paper_size_and_default_margins"
+              doc="Sets the paper size of the #GtkPageSetup and modifies
+the margins according to the new paper size."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="PaperSize" c:type="GtkPaperSize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_paper_width"
+              c:identifier="gtk_page_setup_get_paper_width"
+              doc="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()."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_paper_height"
+              c:identifier="gtk_page_setup_get_paper_height"
+              doc="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()."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_page_width"
+              c:identifier="gtk_page_setup_get_page_width"
+              doc="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()."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_page_height"
+              c:identifier="gtk_page_setup_get_page_height"
+              doc="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()."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_file"
+              c:identifier="gtk_page_setup_load_file"
+              doc="Reads the page setup from the file @file_name.
+See gtk_page_setup_to_file()."
+              version="2.14"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_file"
+              c:identifier="gtk_page_setup_to_file"
+              doc="This function saves the information from @setup to @file_name."
+              version="2.12"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file_name" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_key_file"
+              c:identifier="gtk_page_setup_load_key_file"
+              doc="to use the default name &quot;Page Setup&quot;
+Reads the page setup from the group @group_name in the key file"
+              version="2.14"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_file" transfer-ownership="none">
+            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
+          </parameter>
+          <parameter name="group_name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the name of the group in the key_file to read, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_key_file"
+              c:identifier="gtk_page_setup_to_key_file"
+              doc="or %NULL to use the default name &quot;Page Setup&quot;
+This function adds the page setup from @setup to @key_file."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_file" transfer-ownership="none">
+            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
+          </parameter>
+          <parameter name="group_name" transfer-ownership="none">
+            <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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="Paned"
+           c:type="GtkPaned"
+           parent="Container"
+           abstract="1"
+           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"/>
+      <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="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="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="shrink" transfer-ownership="none">
+            <type name="boolean" 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="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="shrink" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_position"
+              c:identifier="gtk_paned_get_position"
+              doc="Obtains the position of the divider between the two panes.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_position"
+              c:identifier="gtk_paned_set_position"
+              doc="is unset.
+Sets the position of the divider between the two panes.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child1"
+              c:identifier="gtk_paned_get_child1"
+              doc="Obtains the first child of the paned widget."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_child2"
+              c:identifier="gtk_paned_get_child2"
+              doc="Obtains the second child of the paned widget."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_handle_window"
+              c:identifier="gtk_paned_get_handle_window"
+              doc="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."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="compute_position"
+              c:identifier="gtk_paned_compute_position">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="allocation" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="child1_req" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="child2_req" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="max-position"
+                version="2.4"
+                doc="The largest possible value for the position property. This property is derived from the
+size and shrinkability of the widget&apos;s children.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="min-position"
+                version="2.4"
+                doc="The smallest possible value for the position property. This property is derived from the
+size and shrinkability of the widget&apos;s children.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="position" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="position-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="child1">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="child2">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="handle">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="xor_gc">
+        <type name="Gdk.GC" c:type="GdkGC*"/>
+      </field>
+      <field name="cursor_type">
+        <type name="Gdk.CursorType" c:type="GdkCursorType"/>
+      </field>
+      <field name="handle_pos">
+        <type name="Gdk.Rectangle" c:type="GdkRectangle"/>
+      </field>
+      <field name="child1_size">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="last_allocation">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="min_position">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max_position">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="position_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="in_drag" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="child1_shrink" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="child1_resize" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="child2_shrink" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="child2_resize" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="orientation" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="in_recursion" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="handle_prelit" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="last_child1_focus">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="last_child2_focus">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="priv">
+        <type name="PanedPrivate" c:type="GtkPanedPrivate*"/>
+      </field>
+      <field name="drag_pos">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="original_position">
+        <type name="int" c:type="gint"/>
+      </field>
+      <glib:signal name="accept-position"
+                   doc="The ::accept-position signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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."
+                   version="2.0">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cancel-position"
+                   doc="The ::cancel-position signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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."
+                   version="2.0">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cycle-child-focus"
+                   doc="The ::cycle-child-focus signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&gt;keybinding signal&lt;/link&gt;
+which gets emitted to cycle the focus between the children of the paned.
+The default binding is f6."
+                   version="2.0">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="reversed" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="cycle-handle-focus"
+                   doc="The ::cycle-handle-focus signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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."
+                   version="2.0">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="reversed" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-handle"
+                   doc="The ::move-handle signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&gt;keybinding signal&lt;/link&gt;
+which gets emitted to move the handle when the user is using key bindings
+to move it."
+                   version="2.0">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="scroll_type" transfer-ownership="none">
+            <type name="ScrollType" c:type="GtkScrollType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="toggle-handle-focus"
+                   doc="The ::toggle-handle-focus is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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."
+                   version="2.0">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="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" c:type="cycle_child_focus">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="toggle_handle_focus">
+        <callback name="toggle_handle_focus" c:type="toggle_handle_focus">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="move_handle">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="cycle_handle_focus">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="accept_position">
+        <callback name="accept_position" c:type="accept_position">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="cancel_position">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="PanedPrivate" c:type="GtkPanedPrivate">
+    </record>
+    <record name="PaperSize"
+            c:type="GtkPaperSize"
+            glib:type-name="GtkPaperSize"
+            glib:get-type="gtk_paper_size_get_type">
+      <constructor name="new"
+                   c:identifier="gtk_paper_size_new"
+                   doc="Creates a new #GtkPaperSize object by parsing a
+&lt;ulink url=&quot;ftp://ftp.pwg.org/pub/pwg/candidates/cs-pwgmsn10-20020226-5101.1.pdf&quot;&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"
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PaperSize" c:type="GtkPaperSize*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a paper size name, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_ppd"
+                   c:identifier="gtk_paper_size_new_from_ppd"
+                   doc="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"
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PaperSize" c:type="GtkPaperSize*"/>
+        </return-value>
+        <parameters>
+          <parameter name="ppd_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="ppd_display_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_custom"
+                   c:identifier="gtk_paper_size_new_custom"
+                   doc="Creates a new #GtkPaperSize object with the
+given parameters.
+to free it"
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PaperSize" c:type="GtkPaperSize*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="display_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="width" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_key_file"
+                   c:identifier="gtk_paper_size_new_from_key_file"
+                   doc="or %NULL to read the first group
+Reads a paper size from the group @group_name in the key file
+paper size, or %NULL if an error occurred."
+                   version="2.12"
+                   throws="1">
+        <return-value transfer-ownership="full">
+          <type name="PaperSize" c:type="GtkPaperSize*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_file" transfer-ownership="none">
+            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
+          </parameter>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="gtk_paper_size_copy"
+              doc="Copies an existing #GtkPaperSize."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PaperSize" c:type="GtkPaperSize*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gtk_paper_size_free"
+              doc="Free the given #GtkPaperSize object."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="is_equal"
+              c:identifier="gtk_paper_size_is_equal"
+              doc="Compares two #GtkPaperSize objects.
+represent the same paper size"
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size2" transfer-ownership="none">
+            <type name="PaperSize" c:type="GtkPaperSize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name"
+              c:identifier="gtk_paper_size_get_name"
+              doc="Gets the name of the #GtkPaperSize."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_display_name"
+              c:identifier="gtk_paper_size_get_display_name"
+              doc="Gets the human-readable name of the #GtkPaperSize."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_ppd_name"
+              c:identifier="gtk_paper_size_get_ppd_name"
+              doc="Gets the PPD name of the #GtkPaperSize, which
+may be %NULL."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_width"
+              c:identifier="gtk_paper_size_get_width"
+              doc="Gets the paper width of the #GtkPaperSize, in
+units of @unit."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_height"
+              c:identifier="gtk_paper_size_get_height"
+              doc="Gets the paper height of the #GtkPaperSize, in
+units of @unit."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_custom"
+              c:identifier="gtk_paper_size_is_custom"
+              doc="Returns %TRUE if @size is not a standard paper size.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_size"
+              c:identifier="gtk_paper_size_set_size"
+              doc="Changes the dimensions of a @size to @width x @height."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="height" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_top_margin"
+              c:identifier="gtk_paper_size_get_default_top_margin"
+              doc="Gets the default top margin for the #GtkPaperSize."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_bottom_margin"
+              c:identifier="gtk_paper_size_get_default_bottom_margin"
+              doc="Gets the default bottom margin for the #GtkPaperSize."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_left_margin"
+              c:identifier="gtk_paper_size_get_default_left_margin"
+              doc="Gets the default left margin for the #GtkPaperSize."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_right_margin"
+              c:identifier="gtk_paper_size_get_default_right_margin"
+              doc="Gets the default right margin for the #GtkPaperSize."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_key_file"
+              c:identifier="gtk_paper_size_to_key_file"
+              doc="This function adds the paper size from @size to @key_file."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_file" transfer-ownership="none">
+            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
+          </parameter>
+          <parameter name="group_name" transfer-ownership="none">
+            <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="Pixmap"
+           c:type="GtkPixmap"
+           parent="Misc"
+           glib:type-name="GtkPixmap"
+           glib:get-type="gtk_pixmap_get_type"
+           glib:type-struct="PixmapClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_pixmap_new">
+        <return-value transfer-ownership="full">
+          <type name="Pixmap" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixmap" transfer-ownership="none">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none" allow-none="1">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set" c:identifier="gtk_pixmap_set">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get" c:identifier="gtk_pixmap_get">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="val" transfer-ownership="none">
+            <type name="Gdk.Pixmap" c:type="GdkPixmap**"/>
+          </parameter>
+          <parameter name="mask" transfer-ownership="none">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_build_insensitive"
+              c:identifier="gtk_pixmap_set_build_insensitive">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="build" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="misc">
+        <type name="Misc" c:type="GtkMisc"/>
+      </field>
+      <field name="pixmap">
+        <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+      </field>
+      <field name="mask">
+        <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+      </field>
+      <field name="pixmap_insensitive">
+        <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+      </field>
+      <field name="build_insensitive" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </class>
+    <record name="PixmapClass"
+            c:type="GtkPixmapClass"
+            glib:is-gtype-struct-for="Pixmap">
+      <field name="parent_class">
+        <type name="MiscClass" c:type="GtkMiscClass"/>
+      </field>
+    </record>
+    <class name="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"/>
+      <constructor name="new"
+                   c:identifier="gtk_plug_new"
+                   doc="Creates a new plug widget inside the #GtkSocket identified
+by @socket_id. If @socket_id is 0, the plug is left &quot;unplugged&quot; and
+can later be plugged into a #GtkSocket by  gtk_socket_add_id().">
+        <return-value transfer-ownership="full">
+          <type name="Plug" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="socket_id" transfer-ownership="none">
+            <type name="Gdk.NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_for_display"
+                   c:identifier="gtk_plug_new_for_display"
+                   doc="Create a new plug widget inside the #GtkSocket identified by socket_id."
+                   version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Plug" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <type name="Gdk.Display" c:type="GdkDisplay*"/>
+          </parameter>
+          <parameter name="socket_id" transfer-ownership="none">
+            <type name="Gdk.NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="construct"
+              c:identifier="gtk_plug_construct"
+              doc="Finish the initialization of @plug for a given #GtkSocket identified by">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="socket_id" transfer-ownership="none">
+            <type name="Gdk.NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="construct_for_display"
+              c:identifier="gtk_plug_construct_for_display"
+              doc="#GtkSocket.
+Finish the initialization of @plug for a given #GtkSocket identified by
+This function will generally only be used by classes deriving from #GtkPlug."
+              version="2.2">
+        <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>
+          <parameter name="socket_id" transfer-ownership="none">
+            <type name="Gdk.NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_id"
+              c:identifier="gtk_plug_get_id"
+              doc="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().">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.NativeWindow" c:type="GdkNativeWindow"/>
+        </return-value>
+      </method>
+      <method name="get_embedded"
+              c:identifier="gtk_plug_get_embedded"
+              doc="Determines whether the plug is embedded in a socket."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_socket_window"
+              c:identifier="gtk_plug_get_socket_window"
+              doc="Retrieves the socket the plug is embedded in."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <property name="embedded"
+                version="2.12"
+                doc="%TRUE if the plug is embedded in a socket.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="socket-window"
+                version="2.14"
+                doc="The window of the socket the plug is embedded in.">
+        <type name="Gdk.Window" c:type="GdkWindow"/>
+      </property>
+      <field name="window">
+        <type name="Window" c:type="GtkWindow"/>
+      </field>
+      <field name="socket_window">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="modality_window">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="modality_group">
+        <type name="WindowGroup" c:type="GtkWindowGroup*"/>
+      </field>
+      <field name="grabbed_keys">
+        <type name="GLib.HashTable" c:type="GHashTable*"/>
+      </field>
+      <field name="same_app" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="embedded"
+                   doc="Gets emitted when the plug becomes embedded in a socket.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </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="Preview"
+           c:type="GtkPreview"
+           parent="Widget"
+           glib:type-name="GtkPreview"
+           glib:get-type="gtk_preview_get_type"
+           glib:type-struct="PreviewClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_preview_new">
+        <return-value transfer-ownership="full">
+          <type name="Preview" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="PreviewType" c:type="GtkPreviewType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="uninit" c:identifier="gtk_preview_uninit">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </function>
+      <function name="set_gamma" c:identifier="gtk_preview_set_gamma">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gamma_" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="set_color_cube"
+                c:identifier="gtk_preview_set_color_cube">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="nred_shades" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="ngreen_shades" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="nblue_shades" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="ngray_shades" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="set_install_cmap"
+                c:identifier="gtk_preview_set_install_cmap">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="install_cmap" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="set_reserved" c:identifier="gtk_preview_set_reserved">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="nreserved" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_visual" c:identifier="gtk_preview_get_visual">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </function>
+      <function name="get_cmap" c:identifier="gtk_preview_get_cmap">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </function>
+      <function name="get_info" c:identifier="gtk_preview_get_info">
+        <return-value transfer-ownership="full">
+          <type name="PreviewInfo" c:type="GtkPreviewInfo*"/>
+        </return-value>
+      </function>
+      <function name="reset" c:identifier="gtk_preview_reset">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </function>
+      <method name="size" c:identifier="gtk_preview_size">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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="put" c:identifier="gtk_preview_put">
+        <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="gc" transfer-ownership="none">
+            <type name="Gdk.GC" c:type="GdkGC*"/>
+          </parameter>
+          <parameter name="srcx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="srcy" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="destx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="desty" 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="draw_row" c:identifier="gtk_preview_draw_row">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </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="w" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_expand" c:identifier="gtk_preview_set_expand">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_dither" c:identifier="gtk_preview_set_dither">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dither" transfer-ownership="none">
+            <type name="Gdk.RgbDither" c:type="GdkRgbDither"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="expand" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="buffer">
+        <type name="any" c:type="guchar*"/>
+      </field>
+      <field name="buffer_width">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="buffer_height">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="bpp">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="rowstride">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="dither">
+        <type name="Gdk.RgbDither" c:type="GdkRgbDither"/>
+      </field>
+      <field name="type" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="expand" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </class>
+    <record name="PreviewClass"
+            c:type="GtkPreviewClass"
+            glib:is-gtype-struct-for="Preview">
+      <field name="parent_class">
+        <type name="WidgetClass" c:type="GtkWidgetClass"/>
+      </field>
+      <field name="info">
+        <type name="PreviewInfo" c:type="GtkPreviewInfo"/>
+      </field>
+    </record>
+    <record name="PreviewInfo" c:type="GtkPreviewInfo">
+      <field name="lookup" writable="1">
+        <type name="any" c:type="guchar*"/>
+      </field>
+      <field name="gamma" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </field>
+    </record>
+    <enumeration name="PreviewType"
+                 glib:type-name="GtkPreviewType"
+                 glib:get-type="gtk_preview_type_get_type"
+                 c:type="GtkPreviewType">
+      <member name="color"
+              value="0"
+              c:identifier="GTK_PREVIEW_COLOR"
+              glib:nick="color"/>
+      <member name="grayscale"
+              value="1"
+              c:identifier="GTK_PREVIEW_GRAYSCALE"
+              glib:nick="grayscale"/>
+    </enumeration>
+    <class name="PrintContext"
+           c:type="GtkPrintContext"
+           parent="GObject.Object"
+           glib:type-name="GtkPrintContext"
+           glib:get-type="gtk_print_context_get_type">
+      <method name="get_cairo_context"
+              c:identifier="gtk_print_context_get_cairo_context"
+              doc="Obtains the cairo context that is associated with the
+#GtkPrintContext."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="cairo.Context" c:type="cairo_t*"/>
+        </return-value>
+      </method>
+      <method name="get_page_setup"
+              c:identifier="gtk_print_context_get_page_setup"
+              doc="Obtains the #GtkPageSetup that determines the page
+dimensions of the #GtkPrintContext."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PageSetup" c:type="GtkPageSetup*"/>
+        </return-value>
+      </method>
+      <method name="get_width"
+              c:identifier="gtk_print_context_get_width"
+              doc="Obtains the width of the #GtkPrintContext, in pixels."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_height"
+              c:identifier="gtk_print_context_get_height"
+              doc="Obtains the height of the #GtkPrintContext, in pixels."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_dpi_x"
+              c:identifier="gtk_print_context_get_dpi_x"
+              doc="Obtains the horizontal resolution of the #GtkPrintContext,
+in dots per inch."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_dpi_y"
+              c:identifier="gtk_print_context_get_dpi_y"
+              doc="Obtains the vertical resolution of the #GtkPrintContext,
+in dots per inch."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_hard_margins"
+              c:identifier="gtk_print_context_get_hard_margins"
+              doc="Obtains the hardware printer margins of the #GtkPrintContext, in units."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="top" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="bottom" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="left" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="right" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pango_fontmap"
+              c:identifier="gtk_print_context_get_pango_fontmap"
+              doc="Returns a #PangoFontMap that is suitable for use
+with the #GtkPrintContext."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="Pango.FontMap" c:type="PangoFontMap*"/>
+        </return-value>
+      </method>
+      <method name="create_pango_context"
+              c:identifier="gtk_print_context_create_pango_context"
+              doc="Creates a new #PangoContext that can be used with the
+#GtkPrintContext."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="create_pango_layout"
+              c:identifier="gtk_print_context_create_pango_layout"
+              doc="Creates a new #PangoLayout that is suitable for use
+with the #GtkPrintContext."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </return-value>
+      </method>
+      <method name="set_cairo_context"
+              c:identifier="gtk_print_context_set_cairo_context"
+              doc="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."
+              version="2.10">
+        <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="dpi_x" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="dpi_y" transfer-ownership="none">
+            <type name="double" 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>
+    <callback name="PrintFunc" c:type="GtkPrintFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="func_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="PrintOperation"
+           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"
+                   doc="Creates a new #GtkPrintOperation."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PrintOperation" c:type="GtkPrintOperation*"/>
+        </return-value>
+      </constructor>
+      <method name="set_default_page_setup"
+              c:identifier="gtk_print_operation_set_default_page_setup"
+              doc="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."
+              version="2.10">
+        <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="a #GtkPageSetup, or %NULL">
+            <type name="PageSetup" c:type="GtkPageSetup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_page_setup"
+              c:identifier="gtk_print_operation_get_default_page_setup"
+              doc="Returns the default page setup, see
+gtk_print_operation_set_default_page_setup()."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PageSetup" c:type="GtkPageSetup*"/>
+        </return-value>
+      </method>
+      <method name="set_print_settings"
+              c:identifier="gtk_print_operation_set_print_settings"
+              doc="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()."
+              version="2.10">
+        <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="#GtkPrintSettings">
+            <type name="PrintSettings" c:type="GtkPrintSettings*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_print_settings"
+              c:identifier="gtk_print_operation_get_print_settings"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PrintSettings" c:type="GtkPrintSettings*"/>
+        </return-value>
+      </method>
+      <method name="set_job_name"
+              c:identifier="gtk_print_operation_set_job_name"
+              doc="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&apos;t set a job name, GTK+ picks a default one by
+numbering successive print jobs."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="job_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_n_pages"
+              c:identifier="gtk_print_operation_set_n_pages"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_pages" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_current_page"
+              c:identifier="gtk_print_operation_set_current_page"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="current_page" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_full_page"
+              c:identifier="gtk_print_operation_set_use_full_page"
+              doc="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)."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="full_page" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_unit"
+              c:identifier="gtk_print_operation_set_unit"
+              doc="Sets up the transformation for the cairo context obtained from
+#GtkPrintContext in such a way that distances are measured in
+units of @unit."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_export_filename"
+              c:identifier="gtk_print_operation_set_export_filename"
+              doc="Sets up the #GtkPrintOperation to generate a file instead
+of showing the print dialog. The indended use of this function
+is for implementing &quot;Export to PDF&quot; actions. Currently, PDF
+is the only supported format.
+&quot;Print to PDF&quot; support is independent of this and is done
+by letting the user pick the &quot;Print to PDF&quot; item from the list
+of printers in the print dialog."
+              version="2.10">
+        <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>
+      </method>
+      <method name="set_track_print_status"
+              c:identifier="gtk_print_operation_set_track_print_status"
+              doc="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 &quot;out of paper&quot; 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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="track_status" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_show_progress"
+              c:identifier="gtk_print_operation_set_show_progress"
+              doc="If @show_progress is %TRUE, the print operation will show a
+progress dialog during the print operation."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_progress" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_allow_async"
+              c:identifier="gtk_print_operation_set_allow_async"
+              doc="Sets whether the gtk_print_operation_run() may return
+before the print operation is completed. Note that
+some platforms may not allow asynchronous operation."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="allow_async" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_custom_tab_label"
+              c:identifier="gtk_print_operation_set_custom_tab_label"
+              doc="Sets the label for the tab holding custom widgets."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the label to use, or %NULL to use the default label">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="run"
+              c:identifier="gtk_print_operation_run"
+              doc="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, &quot;begin-print&quot;,
+G_CALLBACK (begin_print), &amp;data);
+g_signal_connect (print, &quot;draw-page&quot;,
+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,
+&quot;Error printing file:\n%s&quot;,
+error-&gt;message);
+g_signal_connect (error_dialog, &quot;response&quot;,
+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."
+              version="2.10"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="PrintOperationResult" c:type="GtkPrintOperationResult"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <type name="PrintOperationAction"
+                  c:type="GtkPrintOperationAction"/>
+          </parameter>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Transient parent of the dialog">
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_status"
+              c:identifier="gtk_print_operation_get_status"
+              doc="Returns the status of the print operation.
+Also see gtk_print_operation_get_status_string()."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PrintStatus" c:type="GtkPrintStatus"/>
+        </return-value>
+      </method>
+      <method name="get_status_string"
+              c:identifier="gtk_print_operation_get_status_string"
+              doc="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"
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="is_finished"
+              c:identifier="gtk_print_operation_is_finished"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="cancel"
+              c:identifier="gtk_print_operation_cancel"
+              doc="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."
+              version="2.10">
+        <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"
+              doc="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."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_defer_drawing"
+              c:identifier="gtk_print_operation_set_defer_drawing"
+              doc="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 &quot;draw-page&quot; signal."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_support_selection"
+              c:identifier="gtk_print_operation_set_support_selection"
+              doc="Sets whether selection is supported by #GtkPrintOperation."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="support_selection" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_support_selection"
+              c:identifier="gtk_print_operation_get_support_selection"
+              doc="Gets the value of #GtkPrintOperation::support-selection property."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_has_selection"
+              c:identifier="gtk_print_operation_set_has_selection"
+              doc="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."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="has_selection" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_has_selection"
+              c:identifier="gtk_print_operation_get_has_selection"
+              doc="Gets the value of #GtkPrintOperation::has-selection property."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_embed_page_setup"
+              c:identifier="gtk_print_operation_set_embed_page_setup"
+              doc="Embed page size combo box and orientation combo box into page setup page.
+Selected page setup is stored as default page setup in #GtkPrintOperation."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="embed" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_embed_page_setup"
+              c:identifier="gtk_print_operation_get_embed_page_setup"
+              doc="Gets the value of #GtkPrintOperation::embed-page-setup property."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_n_pages_to_print"
+              c:identifier="gtk_print_operation_get_n_pages_to_print"
+              doc="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."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <property name="allow-async"
+                version="2.10"
+                writable="1"
+                doc="Determines whether the print operation may run asynchronously or not.
+Some systems don&apos;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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="current-page"
+                version="2.10"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="custom-tab-label"
+                version="2.10"
+                writable="1"
+                doc="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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="default-page-setup"
+                version="2.10"
+                writable="1"
+                doc="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.">
+        <type name="PageSetup" c:type="GtkPageSetup"/>
+      </property>
+      <property name="embed-page-setup"
+                version="2.18"
+                writable="1"
+                doc="If %TRUE, page size combo box and orientation combo box are embedded into page setup page.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="export-filename"
+                version="2.10"
+                writable="1"
+                doc="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
+&quot;Export to PDF&quot; actions.
+&quot;Print to PDF&quot; support is independent of this and is done
+by letting the user pick the &quot;Print to PDF&quot; item from the
+list of printers in the print dialog.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="has-selection"
+                version="2.18"
+                writable="1"
+                doc="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 &quot;Selection&quot; button sensitive.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="job-name"
+                version="2.10"
+                writable="1"
+                doc="A string used to identify the job (e.g. in monitoring
+applications like eggcups).
+If you don&apos;t set a job name, GTK+ picks a default one
+by numbering successive print jobs.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="n-pages"
+                version="2.10"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="n-pages-to-print"
+                version="2.18"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="print-settings"
+                version="2.10"
+                writable="1"
+                doc="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().">
+        <type name="PrintSettings" c:type="GtkPrintSettings"/>
+      </property>
+      <property name="show-progress"
+                version="2.10"
+                writable="1"
+                doc="Determines whether to show a progress dialog during the
+print operation.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="status"
+                version="2.10"
+                doc="The status of the print operation.">
+        <type name="PrintStatus" c:type="GtkPrintStatus"/>
+      </property>
+      <property name="status-string"
+                version="2.10"
+                doc="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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="support-selection"
+                version="2.18"
+                writable="1"
+                doc="If %TRUE, the print operation will support print of selection.
+This allows the print dialog to show a &quot;Selection&quot; button.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="track-print-status"
+                version="2.10"
+                writable="1"
+                doc="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 &quot;out of paper&quot;
+issues, and when the print job actually reaches the printer.
+However, this is often implemented using polling, and should
+not be enabled unless needed.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="unit"
+                version="2.10"
+                writable="1"
+                doc="The transformation for the cairo context obtained from
+#GtkPrintContext is set up in such a way that distances
+are measured in units of @unit.">
+        <type name="Unit" c:type="GtkUnit"/>
+      </property>
+      <property name="use-full-page"
+                version="2.10"
+                writable="1"
+                doc="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).">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="PrintOperationPrivate" c:type="GtkPrintOperationPrivate*"/>
+      </field>
+      <glib:signal name="begin-print"
+                   doc="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()."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <type name="PrintContext" c:type="GtkPrintContext"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="create-custom-widget"
+                   doc="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"
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="GObject.Object" c:type="GObject"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="custom-widget-apply"
+                   doc="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."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="done"
+                   doc="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."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="result" transfer-ownership="none">
+            <type name="PrintOperationResult"
+                  c:type="GtkPrintOperationResult"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="draw-page"
+                   doc="Emitted for every page that is printed. The signal handler
+must render the @page_nr&apos;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 (&quot;sans 14&quot;);
+pango_layout_set_font_description (layout, desc);
+pango_font_description_free (desc);
+pango_layout_set_text (layout, &quot;some text&quot;, -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."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <type name="PrintContext" c:type="GtkPrintContext"/>
+          </parameter>
+          <parameter name="page_nr" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="end-print"
+                   doc="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."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <type name="PrintContext" c:type="GtkPrintContext"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="paginate"
+                   doc="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&apos;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."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <type name="PrintContext" c:type="GtkPrintContext"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="preview"
+                   doc="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)."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </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="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the #GtkWindow to use as window parent, or %NULL">
+            <type name="Window" c:type="GtkWindow"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="request-page-setup"
+                   doc="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."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <type name="PrintContext" c:type="GtkPrintContext"/>
+          </parameter>
+          <parameter name="page_nr" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="setup" transfer-ownership="none">
+            <type name="PageSetup" c:type="GtkPageSetup"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="status-changed"
+                   doc="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."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="update-custom-widget"
+                   doc="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."
+                   version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </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" c:type="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" c:type="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" c:type="paginate">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="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="int" 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" c:type="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="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="end_print">
+        <callback name="end_print" c:type="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" c:type="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">
+        <callback name="create_custom_widget" c:type="create_custom_widget">
+          <return-value transfer-ownership="full">
+            <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" c:type="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" c:type="preview">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved5">
+        <callback name="gtk_reserved5" c:type="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved6">
+        <callback name="gtk_reserved6" c:type="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <interface name="PrintOperationPreview"
+               c:type="GtkPrintOperationPreview"
+               glib:type-name="GtkPrintOperationPreview"
+               glib:get-type="gtk_print_operation_preview_get_type"
+               glib:type-struct="PrintOperationPreviewIface">
+      <virtual-method name="render_page" invoker="render_page">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_nr" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="is_selected" invoker="is_selected">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_nr" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="end_preview" invoker="end_preview">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="render_page"
+              c:identifier="gtk_print_operation_preview_render_page"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_nr" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="end_preview"
+              c:identifier="gtk_print_operation_preview_end_preview"
+              doc="Ends a preview.
+This function must be called to finish a custom print preview."
+              version="2.10">
+        <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"
+              doc="Returns whether the given page is included in the set of pages that
+have been selected for printing."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_nr" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="got-page-size"
+                   doc="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().">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </glib:signal>
+      <glib:signal name="ready"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <type name="PrintContext" c:type="GtkPrintContext"/>
+          </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" c:type="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" c:type="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" c:type="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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="is_selected">
+        <callback name="is_selected" c:type="is_selected">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="end_preview">
+        <callback name="end_preview" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved5">
+        <callback name="gtk_reserved5" c:type="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved6">
+        <callback name="gtk_reserved6" c:type="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved7">
+        <callback name="gtk_reserved7" c:type="_gtk_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="PrintOperationPrivate" c:type="GtkPrintOperationPrivate">
+    </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: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"
+                   doc="Creates a new #GtkPrintSettings object."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PrintSettings" c:type="GtkPrintSettings*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_file"
+                   c:identifier="gtk_print_settings_new_from_file"
+                   doc="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()."
+                   version="2.12"
+                   throws="1">
+        <return-value transfer-ownership="full">
+          <type name="PrintSettings" c:type="GtkPrintSettings*"/>
+        </return-value>
+        <parameters>
+          <parameter name="file_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_key_file"
+                   c:identifier="gtk_print_settings_new_from_key_file"
+                   doc="the default &quot;Print Settings&quot;
+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."
+                   version="2.12"
+                   throws="1">
+        <return-value transfer-ownership="full">
+          <type name="PrintSettings" c:type="GtkPrintSettings*"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_file" transfer-ownership="none">
+            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
+          </parameter>
+          <parameter name="group_name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the name of the group to use, or %NULL to use">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="gtk_print_settings_copy"
+              doc="Copies a #GtkPrintSettings object."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PrintSettings" c:type="GtkPrintSettings*"/>
+        </return-value>
+      </method>
+      <method name="load_file"
+              c:identifier="gtk_print_settings_load_file"
+              doc="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()."
+              version="2.14"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_file"
+              c:identifier="gtk_print_settings_to_file"
+              doc="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."
+              version="2.12"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="file_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_key_file"
+              c:identifier="gtk_print_settings_load_key_file"
+              doc="&quot;Print Settings&quot;
+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."
+              version="2.14"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_file" transfer-ownership="none">
+            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
+          </parameter>
+          <parameter name="group_name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the name of the group to use, or %NULL to use the default">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_key_file"
+              c:identifier="gtk_print_settings_to_key_file"
+              doc="%NULL to use the default &quot;Print Settings&quot;
+This function adds the print settings from @settings to @key_file."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="key_file" transfer-ownership="none">
+            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
+          </parameter>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_key"
+              c:identifier="gtk_print_settings_has_key"
+              doc="Returns %TRUE, if a value is associated with @key."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get"
+              c:identifier="gtk_print_settings_get"
+              doc="Looks up the string value associated with @key."
+              version="2.10">
+        <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="set"
+              c:identifier="gtk_print_settings_set"
+              doc="Associates @value with @key."
+              version="2.10">
+        <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"
+                     allow-none="1"
+                     doc="a string value, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset"
+              c:identifier="gtk_print_settings_unset"
+              doc="Removes any value associated with @key.
+This has the same effect as setting the value to %NULL."
+              version="2.10">
+        <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>
+        </parameters>
+      </method>
+      <method name="foreach"
+              c:identifier="gtk_print_settings_foreach"
+              doc="Calls @func for each key-value pair of @settings."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2"
+                     doc="the function to call">
+            <type name="PrintSettingsFunc" c:type="GtkPrintSettingsFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bool"
+              c:identifier="gtk_print_settings_get_bool"
+              doc="Returns the boolean represented by the value
+that is associated with @key.
+The string &quot;true&quot; represents %TRUE, any other
+string %FALSE."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_bool"
+              c:identifier="gtk_print_settings_set_bool"
+              doc="Sets @key to a boolean value."
+              version="2.10">
+        <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="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double"
+              c:identifier="gtk_print_settings_get_double"
+              doc="Returns the double value associated with @key, or 0."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_with_default"
+              c:identifier="gtk_print_settings_get_double_with_default"
+              doc="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()."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="def" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_double"
+              c:identifier="gtk_print_settings_set_double"
+              doc="Sets @key to a double value."
+              version="2.10">
+        <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="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_length"
+              c:identifier="gtk_print_settings_get_length"
+              doc="Returns the value associated with @key, interpreted
+as a length. The returned value is converted to @units."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_length"
+              c:identifier="gtk_print_settings_set_length"
+              doc="Associates a length in units of @unit with @key."
+              version="2.10">
+        <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="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int"
+              c:identifier="gtk_print_settings_get_int"
+              doc="Returns the integer value of @key, or 0."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_int_with_default"
+              c:identifier="gtk_print_settings_get_int_with_default"
+              doc="Returns the value of @key, interpreted as
+an integer, or the default value."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="key" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="def" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_int"
+              c:identifier="gtk_print_settings_set_int"
+              doc="Sets @key to an integer value."
+              version="2.10">
+        <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="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_printer"
+              c:identifier="gtk_print_settings_get_printer"
+              doc="Convenience function to obtain the value of
+%GTK_PRINT_SETTINGS_PRINTER."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_printer"
+              c:identifier="gtk_print_settings_set_printer"
+              doc="Convenience function to set %GTK_PRINT_SETTINGS_PRINTER
+to @printer."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="printer" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_orientation"
+              c:identifier="gtk_print_settings_get_orientation"
+              doc="Get the value of %GTK_PRINT_SETTINGS_ORIENTATION,
+converted to a #GtkPageOrientation."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PageOrientation" c:type="GtkPageOrientation"/>
+        </return-value>
+      </method>
+      <method name="set_orientation"
+              c:identifier="gtk_print_settings_set_orientation"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_ORIENTATION."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <type name="PageOrientation" c:type="GtkPageOrientation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_paper_size"
+              c:identifier="gtk_print_settings_get_paper_size"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_PAPER_FORMAT,
+converted to a #GtkPaperSize."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PaperSize" c:type="GtkPaperSize*"/>
+        </return-value>
+      </method>
+      <method name="set_paper_size"
+              c:identifier="gtk_print_settings_set_paper_size"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_PAPER_FORMAT,
+%GTK_PRINT_SETTINGS_PAPER_WIDTH and
+%GTK_PRINT_SETTINGS_PAPER_HEIGHT."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="paper_size" transfer-ownership="none">
+            <type name="PaperSize" c:type="GtkPaperSize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_paper_width"
+              c:identifier="gtk_print_settings_get_paper_width"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_PAPER_WIDTH,
+converted to @unit."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_paper_width"
+              c:identifier="gtk_print_settings_set_paper_width"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_PAPER_WIDTH."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_paper_height"
+              c:identifier="gtk_print_settings_get_paper_height"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_PAPER_HEIGHT,
+converted to @unit."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_paper_height"
+              c:identifier="gtk_print_settings_set_paper_height"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_PAPER_HEIGHT."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="height" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="unit" transfer-ownership="none">
+            <type name="Unit" c:type="GtkUnit"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_color"
+              c:identifier="gtk_print_settings_get_use_color"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_USE_COLOR."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_use_color"
+              c:identifier="gtk_print_settings_set_use_color"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_USE_COLOR."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_color" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_collate"
+              c:identifier="gtk_print_settings_get_collate"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_COLLATE."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_collate"
+              c:identifier="gtk_print_settings_set_collate"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_COLLATE."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="collate" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_reverse"
+              c:identifier="gtk_print_settings_get_reverse"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_REVERSE."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_reverse"
+              c:identifier="gtk_print_settings_set_reverse"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_REVERSE."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="reverse" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_duplex"
+              c:identifier="gtk_print_settings_get_duplex"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_DUPLEX."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PrintDuplex" c:type="GtkPrintDuplex"/>
+        </return-value>
+      </method>
+      <method name="set_duplex"
+              c:identifier="gtk_print_settings_set_duplex"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_DUPLEX."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="duplex" transfer-ownership="none">
+            <type name="PrintDuplex" c:type="GtkPrintDuplex"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_quality"
+              c:identifier="gtk_print_settings_get_quality"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_QUALITY."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PrintQuality" c:type="GtkPrintQuality"/>
+        </return-value>
+      </method>
+      <method name="set_quality"
+              c:identifier="gtk_print_settings_set_quality"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_QUALITY."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="quality" transfer-ownership="none">
+            <type name="PrintQuality" c:type="GtkPrintQuality"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_copies"
+              c:identifier="gtk_print_settings_get_n_copies"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_N_COPIES."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_n_copies"
+              c:identifier="gtk_print_settings_set_n_copies"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_N_COPIES."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="num_copies" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_number_up"
+              c:identifier="gtk_print_settings_get_number_up"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_NUMBER_UP."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_number_up"
+              c:identifier="gtk_print_settings_set_number_up"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_NUMBER_UP."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="number_up" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_number_up_layout"
+              c:identifier="gtk_print_settings_get_number_up_layout"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="NumberUpLayout" c:type="GtkNumberUpLayout"/>
+        </return-value>
+      </method>
+      <method name="set_number_up_layout"
+              c:identifier="gtk_print_settings_set_number_up_layout"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="number_up_layout" transfer-ownership="none">
+            <type name="NumberUpLayout" c:type="GtkNumberUpLayout"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_resolution"
+              c:identifier="gtk_print_settings_get_resolution"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_RESOLUTION."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_resolution"
+              c:identifier="gtk_print_settings_set_resolution"
+              doc="Sets the values of %GTK_PRINT_SETTINGS_RESOLUTION,
+%GTK_PRINT_SETTINGS_RESOLUTION_X and
+%GTK_PRINT_SETTINGS_RESOLUTION_Y."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resolution" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_resolution_x"
+              c:identifier="gtk_print_settings_get_resolution_x"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_RESOLUTION_X."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_resolution_y"
+              c:identifier="gtk_print_settings_get_resolution_y"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_RESOLUTION_Y."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_resolution_xy"
+              c:identifier="gtk_print_settings_set_resolution_xy"
+              doc="Sets the values of %GTK_PRINT_SETTINGS_RESOLUTION,
+%GTK_PRINT_SETTINGS_RESOLUTION_X and
+%GTK_PRINT_SETTINGS_RESOLUTION_Y."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resolution_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="resolution_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_printer_lpi"
+              c:identifier="gtk_print_settings_get_printer_lpi"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_PRINTER_LPI."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_printer_lpi"
+              c:identifier="gtk_print_settings_set_printer_lpi"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_PRINTER_LPI."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="lpi" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_scale"
+              c:identifier="gtk_print_settings_get_scale"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_SCALE."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_scale"
+              c:identifier="gtk_print_settings_set_scale"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_SCALE."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_print_pages"
+              c:identifier="gtk_print_settings_get_print_pages"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_PRINT_PAGES."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PrintPages" c:type="GtkPrintPages"/>
+        </return-value>
+      </method>
+      <method name="set_print_pages"
+              c:identifier="gtk_print_settings_set_print_pages"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_PRINT_PAGES."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pages" transfer-ownership="none">
+            <type name="PrintPages" c:type="GtkPrintPages"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_page_ranges"
+              c:identifier="gtk_print_settings_get_page_ranges"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_PAGE_RANGES.
+to free the array when it is no longer needed."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PageRange" c:type="GtkPageRange*"/>
+        </return-value>
+        <parameters>
+          <parameter name="num_ranges"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_page_ranges"
+              c:identifier="gtk_print_settings_set_page_ranges"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_PAGE_RANGES."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_ranges" transfer-ownership="none">
+            <type name="PageRange" c:type="GtkPageRange*"/>
+          </parameter>
+          <parameter name="num_ranges" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_page_set"
+              c:identifier="gtk_print_settings_get_page_set"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_PAGE_SET."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="PageSet" c:type="GtkPageSet"/>
+        </return-value>
+      </method>
+      <method name="set_page_set"
+              c:identifier="gtk_print_settings_set_page_set"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_PAGE_SET."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="page_set" transfer-ownership="none">
+            <type name="PageSet" c:type="GtkPageSet"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_source"
+              c:identifier="gtk_print_settings_get_default_source"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_DEFAULT_SOURCE."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_default_source"
+              c:identifier="gtk_print_settings_set_default_source"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_DEFAULT_SOURCE."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="default_source" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_media_type"
+              c:identifier="gtk_print_settings_get_media_type"
+              doc="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;"
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_media_type"
+              c:identifier="gtk_print_settings_set_media_type"
+              doc="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;"
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="media_type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_dither"
+              c:identifier="gtk_print_settings_get_dither"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_DITHER."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_dither"
+              c:identifier="gtk_print_settings_set_dither"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_DITHER."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dither" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_finishings"
+              c:identifier="gtk_print_settings_get_finishings"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_FINISHINGS."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_finishings"
+              c:identifier="gtk_print_settings_set_finishings"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_FINISHINGS."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="finishings" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_output_bin"
+              c:identifier="gtk_print_settings_get_output_bin"
+              doc="Gets the value of %GTK_PRINT_SETTINGS_OUTPUT_BIN."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_output_bin"
+              c:identifier="gtk_print_settings_set_output_bin"
+              doc="Sets the value of %GTK_PRINT_SETTINGS_OUTPUT_BIN."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="output_bin" transfer-ownership="none">
+            <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="any" 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="request_needed"
+              value="8192"
+              c:identifier="PRIVATE_GTK_REQUEST_NEEDED"
+              glib:nick="request-needed"/>
+    </bitfield>
+    <class name="Progress"
+           c:type="GtkProgress"
+           parent="Widget"
+           abstract="1"
+           glib:type-name="GtkProgress"
+           glib:get-type="gtk_progress_get_type"
+           glib:type-struct="ProgressClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <virtual-method name="paint">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="update">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="act_mode_enter">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <method name="set_show_text" c:identifier="gtk_progress_set_show_text">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_text" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text_alignment"
+              c:identifier="gtk_progress_set_text_alignment">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_align" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="y_align" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_format_string"
+              c:identifier="gtk_progress_set_format_string">
+        <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>
+        </parameters>
+      </method>
+      <method name="set_adjustment" c:identifier="gtk_progress_set_adjustment">
+        <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>
+      </method>
+      <method name="configure" c:identifier="gtk_progress_configure">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="min" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="max" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_percentage" c:identifier="gtk_progress_set_percentage">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="percentage" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value" c:identifier="gtk_progress_set_value">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value" c:identifier="gtk_progress_get_value">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_activity_mode"
+              c:identifier="gtk_progress_set_activity_mode">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="activity_mode" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_current_text"
+              c:identifier="gtk_progress_get_current_text">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_text_from_value"
+              c:identifier="gtk_progress_get_text_from_value">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_current_percentage"
+              c:identifier="gtk_progress_get_current_percentage">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_percentage_from_value"
+              c:identifier="gtk_progress_get_percentage_from_value">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="activity-mode" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="show-text" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="text-xalign" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="text-yalign" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="adjustment">
+        <type name="Adjustment" c:type="GtkAdjustment*"/>
+      </field>
+      <field name="offscreen_pixmap">
+        <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+      </field>
+      <field name="format">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="x_align">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="y_align">
+        <type name="float" c:type="gfloat"/>
+      </field>
+      <field name="show_text" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="activity_mode" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="use_text_format" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </class>
+    <class name="ProgressBar"
+           c:type="GtkProgressBar"
+           parent="Progress"
+           glib:type-name="GtkProgressBar"
+           glib:get-type="gtk_progress_bar_get_type"
+           glib:type-struct="ProgressBarClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_progress_bar_new">
+        <return-value transfer-ownership="full">
+          <type name="ProgressBar" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_adjustment"
+                   c:identifier="gtk_progress_bar_new_with_adjustment"
+                   doc="Creates a new #GtkProgressBar with an associated #GtkAdjustment.">
+        <return-value transfer-ownership="none" doc="a #GtkProgressBar.">
+          <type name="ProgressBar" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="pulse"
+              c:identifier="gtk_progress_bar_pulse"
+              doc="Indicates that some progress is made, but you don&apos;t know how much.
+Causes the progress bar to enter &quot;activity mode,&quot; 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()).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_text"
+              c:identifier="gtk_progress_bar_set_text"
+              doc="Causes the given @text to appear superimposed on the progress bar.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a UTF-8 string, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fraction"
+              c:identifier="gtk_progress_bar_set_fraction"
+              doc="Causes the progress bar to &quot;fill in&quot; the given fraction
+of the bar. The fraction should be between 0.0 and 1.0,
+inclusive.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fraction" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_pulse_step"
+              c:identifier="gtk_progress_bar_set_pulse_step"
+              doc="Sets the fraction of total progress bar length to move the
+bouncing block for each call to gtk_progress_bar_pulse().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fraction" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_orientation"
+              c:identifier="gtk_progress_bar_set_orientation"
+              doc="Causes the progress bar to switch to a different orientation
+(left-to-right, right-to-left, top-to-bottom, or bottom-to-top).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <type name="ProgressBarOrientation"
+                  c:type="GtkProgressBarOrientation"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text"
+              c:identifier="gtk_progress_bar_get_text"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_fraction"
+              c:identifier="gtk_progress_bar_get_fraction"
+              doc="Returns the current fraction of the task that&apos;s been completed.">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_pulse_step"
+              c:identifier="gtk_progress_bar_get_pulse_step"
+              doc="Retrieves the pulse step set with gtk_progress_bar_set_pulse_step()">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_orientation"
+              c:identifier="gtk_progress_bar_get_orientation"
+              doc="Retrieves the current progress bar orientation.">
+        <return-value transfer-ownership="full">
+          <type name="ProgressBarOrientation"
+                c:type="GtkProgressBarOrientation"/>
+        </return-value>
+      </method>
+      <method name="set_ellipsize"
+              c:identifier="gtk_progress_bar_set_ellipsize"
+              doc="if there is not enough space to render the entire string."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ellipsize"
+              c:identifier="gtk_progress_bar_get_ellipsize"
+              doc="Returns the ellipsizing position of the progressbar.
+See gtk_progress_bar_set_ellipsize()."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+        </return-value>
+      </method>
+      <method name="set_bar_style"
+              c:identifier="gtk_progress_bar_set_bar_style">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="style" transfer-ownership="none">
+            <type name="ProgressBarStyle" c:type="GtkProgressBarStyle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_discrete_blocks"
+              c:identifier="gtk_progress_bar_set_discrete_blocks">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocks" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_activity_step"
+              c:identifier="gtk_progress_bar_set_activity_step">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="step" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_activity_blocks"
+              c:identifier="gtk_progress_bar_set_activity_blocks">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="blocks" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="update" c:identifier="gtk_progress_bar_update">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="percentage" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="activity-blocks" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="activity-step" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="adjustment" writable="1">
+        <type name="Adjustment" c:type="GtkAdjustment"/>
+      </property>
+      <property name="bar-style" writable="1">
+        <type name="ProgressBarStyle" c:type="GtkProgressBarStyle"/>
+      </property>
+      <property name="discrete-blocks" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="ellipsize"
+                version="2.6"
+                writable="1"
+                doc="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 &quot;...&quot;. Another means to set a
+progressbar&apos;s width is gtk_widget_set_size_request().">
+        <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+      </property>
+      <property name="fraction" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="orientation" writable="1">
+        <type name="ProgressBarOrientation"
+              c:type="GtkProgressBarOrientation"/>
+      </property>
+      <property name="pulse-step" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="text" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <field name="progress">
+        <type name="Progress" c:type="GtkProgress"/>
+      </field>
+      <field name="bar_style">
+        <type name="ProgressBarStyle" c:type="GtkProgressBarStyle"/>
+      </field>
+      <field name="orientation">
+        <type name="ProgressBarOrientation"
+              c:type="GtkProgressBarOrientation"/>
+      </field>
+      <field name="blocks">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="in_block">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="activity_pos">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="activity_step">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="activity_blocks">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="pulse_fraction">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="activity_dir" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="ellipsize" bits="3">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="dirty" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </class>
+    <record name="ProgressBarClass"
+            c:type="GtkProgressBarClass"
+            glib:is-gtype-struct-for="ProgressBar">
+      <field name="parent_class">
+        <type name="ProgressClass" c:type="GtkProgressClass"/>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="ProgressBarOrientation"
+                 glib:type-name="GtkProgressBarOrientation"
+                 glib:get-type="gtk_progress_bar_orientation_get_type"
+                 c:type="GtkProgressBarOrientation">
+      <member name="left_to_right"
+              value="0"
+              c:identifier="GTK_PROGRESS_LEFT_TO_RIGHT"
+              glib:nick="left-to-right"/>
+      <member name="right_to_left"
+              value="1"
+              c:identifier="GTK_PROGRESS_RIGHT_TO_LEFT"
+              glib:nick="right-to-left"/>
+      <member name="bottom_to_top"
+              value="2"
+              c:identifier="GTK_PROGRESS_BOTTOM_TO_TOP"
+              glib:nick="bottom-to-top"/>
+      <member name="top_to_bottom"
+              value="3"
+              c:identifier="GTK_PROGRESS_TOP_TO_BOTTOM"
+              glib:nick="top-to-bottom"/>
+    </enumeration>
+    <enumeration name="ProgressBarStyle"
+                 glib:type-name="GtkProgressBarStyle"
+                 glib:get-type="gtk_progress_bar_style_get_type"
+                 c:type="GtkProgressBarStyle">
+      <member name="continuous"
+              value="0"
+              c:identifier="GTK_PROGRESS_CONTINUOUS"
+              glib:nick="continuous"/>
+      <member name="discrete"
+              value="1"
+              c:identifier="GTK_PROGRESS_DISCRETE"
+              glib:nick="discrete"/>
+    </enumeration>
+    <record name="ProgressClass"
+            c:type="GtkProgressClass"
+            glib:is-gtype-struct-for="Progress">
+      <field name="parent_class">
+        <type name="WidgetClass" c:type="GtkWidgetClass"/>
+      </field>
+      <field name="paint">
+        <callback name="paint" c:type="paint">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="progress" transfer-ownership="none">
+              <type name="Progress" c:type="GtkProgress*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="update">
+        <callback name="update" c:type="update">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="progress" transfer-ownership="none">
+              <type name="Progress" c:type="GtkProgress*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="act_mode_enter">
+        <callback name="act_mode_enter" c:type="act_mode_enter">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="progress" transfer-ownership="none">
+              <type name="Progress" c:type="GtkProgress*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="RadioAction"
+           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"
+                   doc="action, or %NULL
+return if this action is selected.
+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()."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="RadioAction" c:type="GtkRadioAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="label"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The label displayed in menu items and on buttons, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tooltip"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A tooltip for this action, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none" doc="should">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_group"
+              c:identifier="gtk_radio_action_get_group"
+              doc="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);
+}
+]|"
+              version="2.4">
+        <return-value transfer-ownership="none"
+                      doc="the list representing the radio group for this object">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Action"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="set_group"
+              c:identifier="gtk_radio_action_set_group"
+              doc="Sets the radio group for the radio action object."
+              version="2.4">
+        <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*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_current_value"
+              c:identifier="gtk_radio_action_get_current_value"
+              doc="Obtains the value property of the currently active member of
+the group to which @action belongs."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_current_value"
+              c:identifier="gtk_radio_action_set_current_value"
+              doc="Sets the currently active group member to the member with value
+property @current_value."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="current_value" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="current-value"
+                version="2.10"
+                writable="1"
+                doc="The value property of the currently active member of the group to which
+this action belongs.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="group"
+                version="2.4"
+                readable="0"
+                writable="1"
+                doc="Sets a new group for a radio action.">
+        <type name="RadioAction" c:type="GtkRadioAction"/>
+      </property>
+      <property name="value"
+                version="2.4"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="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"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="current" transfer-ownership="none">
+            <type name="RadioAction" c:type="GtkRadioAction"/>
+          </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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="RadioActionEntry" c:type="GtkRadioActionEntry">
+      <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="int" c:type="gint"/>
+      </field>
+    </record>
+    <record name="RadioActionPrivate" c:type="GtkRadioActionPrivate">
+    </record>
+    <class name="RadioButton"
+           c:type="GtkRadioButton"
+           parent="CheckButton"
+           glib:type-name="GtkRadioButton"
+           glib:get-type="gtk_radio_button_get_type"
+           glib:type-struct="RadioButtonClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_radio_button_new">
+        <return-value transfer-ownership="full">
+          <type name="RadioButton" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_widget"
+                   c:identifier="gtk_radio_button_new_from_widget">
+        <return-value transfer-ownership="full">
+          <type name="RadioButton" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="radio_group_member" transfer-ownership="none">
+            <type name="RadioButton" c:type="GtkRadioButton*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_radio_button_new_with_label">
+        <return-value transfer-ownership="full">
+          <type name="RadioButton" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*"/>
+          </parameter>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_label_from_widget"
+                   c:identifier="gtk_radio_button_new_with_label_from_widget">
+        <return-value transfer-ownership="full">
+          <type name="RadioButton" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="radio_group_member" transfer-ownership="none">
+            <type name="RadioButton" c:type="GtkRadioButton*"/>
+          </parameter>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_mnemonic"
+                   c:identifier="gtk_radio_button_new_with_mnemonic"
+                   doc="mnemonic character
+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.">
+        <return-value transfer-ownership="full">
+          <type name="RadioButton" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*"/>
+          </parameter>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_mnemonic_from_widget"
+                   c:identifier="gtk_radio_button_new_with_mnemonic_from_widget"
+                   doc="mnemonic character
+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.">
+        <return-value transfer-ownership="full">
+          <type name="RadioButton" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="radio_group_member"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="widget to get radio group from or %NULL">
+            <type name="RadioButton" c:type="GtkRadioButton*"/>
+          </parameter>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_group"
+              c:identifier="gtk_radio_button_get_group"
+              doc="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.">
+        <return-value transfer-ownership="none" doc="a linked list">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="RadioButton"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="set_group" c:identifier="gtk_radio_button_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*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="group" readable="0" writable="1">
+        <type name="RadioButton" c:type="GtkRadioButton"/>
+      </property>
+      <field name="check_button">
+        <type name="CheckButton" c:type="GtkCheckButton"/>
+      </field>
+      <field name="group">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <glib:signal name="group-changed"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="RadioMenuItem"
+           c:type="GtkRadioMenuItem"
+           parent="CheckMenuItem"
+           glib:type-name="GtkRadioMenuItem"
+           glib:get-type="gtk_radio_menu_item_get_type"
+           glib:type-struct="RadioMenuItemClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_radio_menu_item_new">
+        <return-value transfer-ownership="full">
+          <type name="RadioMenuItem" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_radio_menu_item_new_with_label"
+                   doc="Creates a new #GtkRadioMenuItem whose child is a simple #GtkLabel.">
+        <return-value transfer-ownership="none" doc="A new #GtkRadioMenuItem">
+          <type name="RadioMenuItem" 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">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_mnemonic"
+                   c:identifier="gtk_radio_menu_item_new_with_mnemonic"
+                   doc="mnemonic character
+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.">
+        <return-value transfer-ownership="full">
+          <type name="RadioMenuItem" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="GLib.SList" c:type="GSList*"/>
+          </parameter>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_widget"
+                   c:identifier="gtk_radio_menu_item_new_from_widget"
+                   doc="Creates a new #GtkRadioMenuItem adding it to the same group as @group."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="RadioMenuItem" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="RadioMenuItem" c:type="GtkRadioMenuItem*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_mnemonic_from_widget"
+                   c:identifier="gtk_radio_menu_item_new_with_mnemonic_from_widget"
+                   doc="mnemonic character
+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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="RadioMenuItem" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="RadioMenuItem" c:type="GtkRadioMenuItem*"/>
+          </parameter>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_label_from_widget"
+                   c:identifier="gtk_radio_menu_item_new_with_label_from_widget"
+                   doc="Creates a new GtkRadioMenuItem whose child is a simple GtkLabel.
+The new #GtkRadioMenuItem is added to the same group as @group."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="RadioMenuItem" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="RadioMenuItem" c:type="GtkRadioMenuItem*"/>
+          </parameter>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_group" c:identifier="gtk_radio_menu_item_get_group">
+        <return-value transfer-ownership="full">
+          <type name="GLib.SList" c:type="GSList*"/>
+        </return-value>
+      </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*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="group"
+                version="2.8"
+                readable="0"
+                writable="1"
+                doc="The radio menu item whose group this widget belongs to.">
+        <type name="RadioMenuItem" c:type="GtkRadioMenuItem"/>
+      </property>
+      <field name="check_menu_item">
+        <type name="CheckMenuItem" c:type="GtkCheckMenuItem"/>
+      </field>
+      <field name="group">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <glib:signal name="group-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="RadioToolButton"
+           c:type="GtkRadioToolButton"
+           parent="ToggleToolButton"
+           glib:type-name="GtkRadioToolButton"
+           glib:get-type="gtk_radio_tool_button_get_type"
+           glib:type-struct="RadioToolButtonClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_radio_tool_button_new"
+                   doc="Creates a new #GtkRadioToolButton, adding it to @group."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="RadioToolButton" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="An existing radio button group, or %NULL if you are creating a new group">
+            <type name="GLib.SList" c:type="GSList*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_stock"
+                   c:identifier="gtk_radio_tool_button_new_from_stock"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="RadioToolButton" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="an existing radio button group, or %NULL if you are creating a new group">
+            <type name="GLib.SList" c:type="GSList*"/>
+          </parameter>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_widget"
+                   c:identifier="gtk_radio_tool_button_new_from_widget"
+                   doc="Creates a new #GtkRadioToolButton adding it to the same group as @gruup"
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="RadioToolButton" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="RadioToolButton" c:type="GtkRadioToolButton*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_stock_from_widget"
+                   c:identifier="gtk_radio_tool_button_new_with_stock_from_widget"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="RadioToolButton" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="RadioToolButton" c:type="GtkRadioToolButton*"/>
+          </parameter>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_group"
+              c:identifier="gtk_radio_tool_button_get_group"
+              doc="Returns the radio button group @button belongs to."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="GLib.SList" c:type="GSList*"/>
+        </return-value>
+      </method>
+      <method name="set_group"
+              c:identifier="gtk_radio_tool_button_set_group"
+              doc="Adds @button to @group, removing it from the group it belonged to before."
+              version="2.4">
+        <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*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="group"
+                version="2.4"
+                readable="0"
+                writable="1"
+                doc="Sets a new group for a radio tool button.">
+        <type name="RadioToolButton" c:type="GtkRadioToolButton"/>
+      </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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="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"/>
+      <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="set_update_policy"
+              c:identifier="gtk_range_set_update_policy"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="policy" transfer-ownership="none">
+            <type name="UpdateType" c:type="GtkUpdateType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_update_policy"
+              c:identifier="gtk_range_get_update_policy"
+              doc="Gets the update policy of @range. See gtk_range_set_update_policy().">
+        <return-value transfer-ownership="full">
+          <type name="UpdateType" c:type="GtkUpdateType"/>
+        </return-value>
+      </method>
+      <method name="set_adjustment"
+              c:identifier="gtk_range_set_adjustment"
+              doc="Sets the adjustment to be used as the &quot;model&quot; 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.">
+        <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>
+      </method>
+      <method name="get_adjustment"
+              c:identifier="gtk_range_get_adjustment"
+              doc="Get the #GtkAdjustment which is the &quot;model&quot; object for #GtkRange.
+See gtk_range_set_adjustment() for details.
+The return value does not have a reference added, so should not
+be unreferenced.">
+        <return-value transfer-ownership="full">
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="set_inverted"
+              c:identifier="gtk_range_set_inverted"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_inverted"
+              c:identifier="gtk_range_get_inverted"
+              doc="Gets the value set by gtk_range_set_inverted().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_flippable"
+              c:identifier="gtk_range_set_flippable"
+              doc="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()."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="flippable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_flippable"
+              c:identifier="gtk_range_get_flippable"
+              doc="Gets the value set by gtk_range_set_flippable()."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_slider_size_fixed"
+              c:identifier="gtk_range_set_slider_size_fixed"
+              doc="Sets whether the range&apos;s slider has a fixed size, or a size that
+depends on it&apos;s adjustment&apos;s page size.
+This function is useful mainly for #GtkRange subclasses."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size_fixed" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_slider_size_fixed"
+              c:identifier="gtk_range_get_slider_size_fixed"
+              doc="This function is useful mainly for #GtkRange subclasses.
+See gtk_range_set_slider_size_fixed()."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_min_slider_size"
+              c:identifier="gtk_range_set_min_slider_size"
+              doc="Sets the minimum size of the range&apos;s slider.
+This function is useful mainly for #GtkRange subclasses."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_size" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_min_slider_size"
+              c:identifier="gtk_range_get_min_slider_size"
+              doc="This function is useful mainly for #GtkRange subclasses.
+See gtk_range_set_min_slider_size()."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_range_rect"
+              c:identifier="gtk_range_get_range_rect"
+              doc="This function returns the area that contains the range&apos;s trough
+and its steppers, in widget-&gt;window coordinates.
+This function is useful mainly for #GtkRange subclasses."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="range_rect" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_slider_range"
+              c:identifier="gtk_range_get_slider_range"
+              doc="This function returns sliders range along the long dimension,
+in widget-&gt;window coordinates.
+This function is useful mainly for #GtkRange subclasses."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="slider_start"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the slider&apos;s start, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="slider_end"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the slider&apos;s end, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_lower_stepper_sensitivity"
+              c:identifier="gtk_range_set_lower_stepper_sensitivity"
+              doc="Sets the sensitivity policy for the stepper that points to the
+&apos;lower&apos; end of the GtkRange&apos;s adjustment."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sensitivity" transfer-ownership="none">
+            <type name="SensitivityType" c:type="GtkSensitivityType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_lower_stepper_sensitivity"
+              c:identifier="gtk_range_get_lower_stepper_sensitivity"
+              doc="Gets the sensitivity policy for the stepper that points to the
+&apos;lower&apos; end of the GtkRange&apos;s adjustment."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="SensitivityType" c:type="GtkSensitivityType"/>
+        </return-value>
+      </method>
+      <method name="set_upper_stepper_sensitivity"
+              c:identifier="gtk_range_set_upper_stepper_sensitivity"
+              doc="Sets the sensitivity policy for the stepper that points to the
+&apos;upper&apos; end of the GtkRange&apos;s adjustment."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sensitivity" transfer-ownership="none">
+            <type name="SensitivityType" c:type="GtkSensitivityType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_upper_stepper_sensitivity"
+              c:identifier="gtk_range_get_upper_stepper_sensitivity"
+              doc="Gets the sensitivity policy for the stepper that points to the
+&apos;upper&apos; end of the GtkRange&apos;s adjustment."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="SensitivityType" c:type="GtkSensitivityType"/>
+        </return-value>
+      </method>
+      <method name="set_increments"
+              c:identifier="gtk_range_set_increments"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="step" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="page" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_range"
+              c:identifier="gtk_range_set_range"
+              doc="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.)">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="max" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value"
+              c:identifier="gtk_range_set_value"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value"
+              c:identifier="gtk_range_get_value"
+              doc="Gets the current value of the range.">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_show_fill_level"
+              c:identifier="gtk_range_set_show_fill_level"
+              doc="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."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_fill_level" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_show_fill_level"
+              c:identifier="gtk_range_get_show_fill_level"
+              doc="Gets whether the range displays the fill level graphically."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_restrict_to_fill_level"
+              c:identifier="gtk_range_set_restrict_to_fill_level"
+              doc="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."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="restrict_to_fill_level" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_restrict_to_fill_level"
+              c:identifier="gtk_range_get_restrict_to_fill_level"
+              doc="Gets whether the range is restricted to the fill level."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_fill_level"
+              c:identifier="gtk_range_set_fill_level"
+              doc="Set the new position of the fill level indicator.
+The &quot;fill level&quot; 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&apos;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&apos;s possible to restrict the range&apos;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."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fill_level" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_fill_level"
+              c:identifier="gtk_range_get_fill_level"
+              doc="Gets the current position of the fill level indicator."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <property name="adjustment" writable="1" construct="1">
+        <type name="Adjustment" c:type="GtkAdjustment"/>
+      </property>
+      <property name="fill-level"
+                version="2.12"
+                writable="1"
+                doc="The fill level (e.g. prebuffering of a network stream).
+See gtk_range_set_fill_level().">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="inverted" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="lower-stepper-sensitivity" writable="1">
+        <type name="SensitivityType" c:type="GtkSensitivityType"/>
+      </property>
+      <property name="restrict-to-fill-level"
+                version="2.12"
+                writable="1"
+                doc="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().">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="show-fill-level"
+                version="2.12"
+                writable="1"
+                doc="The show-fill-level property controls whether fill level indicator
+graphics are displayed on the trough. See
+gtk_range_set_show_fill_level().">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="update-policy" writable="1">
+        <type name="UpdateType" c:type="GtkUpdateType"/>
+      </property>
+      <property name="upper-stepper-sensitivity" writable="1">
+        <type name="SensitivityType" c:type="GtkSensitivityType"/>
+      </property>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="adjustment">
+        <type name="Adjustment" c:type="GtkAdjustment*"/>
+      </field>
+      <field name="update_policy">
+        <type name="UpdateType" c:type="GtkUpdateType"/>
+      </field>
+      <field name="inverted" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="flippable" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_stepper_a" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_stepper_b" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_stepper_c" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_stepper_d" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="need_recalc" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="slider_size_fixed" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="min_slider_size">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="orientation">
+        <type name="Orientation" c:type="GtkOrientation"/>
+      </field>
+      <field name="range_rect">
+        <type name="Gdk.Rectangle" c:type="GdkRectangle"/>
+      </field>
+      <field name="slider_start">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="slider_end">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="round_digits">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="trough_click_forward" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="update_pending" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="layout">
+        <type name="RangeLayout" c:type="GtkRangeLayout*"/>
+      </field>
+      <field name="timer">
+        <type name="RangeStepTimer" c:type="GtkRangeStepTimer*"/>
+      </field>
+      <field name="slide_initial_slider_position">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="slide_initial_coordinate">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="update_timeout_id">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="event_window">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <glib:signal name="adjust-bounds">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="change-value"
+                   doc="signal, %FALSE to propagate the signal further
+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."
+                   version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="scroll" transfer-ownership="none">
+            <type name="ScrollType" c:type="GtkScrollType"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-slider"
+                   doc="Virtual function that moves the slider. Used for keybindings.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="step" transfer-ownership="none">
+            <type name="ScrollType" c:type="GtkScrollType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="value-changed"
+                   doc="Emitted when the range value changes.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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" c:type="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="double" c:type="gdouble"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_slider">
+        <callback name="move_slider" c:type="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" c:type="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" c:type="change_value">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="double" c:type="gdouble"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="RangeLayout" c:type="GtkRangeLayout">
+    </record>
+    <record name="RangeStepTimer" c:type="GtkRangeStepTimer">
+    </record>
+    <record name="RcContext" c:type="GtkRcContext">
+    </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="boolean" 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: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">
+        <return-value transfer-ownership="full">
+          <type name="RcStyle" c:type="GtkRcStyle*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="parse">
+        <return-value transfer-ownership="none">
+          <type name="uint" 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>
+      <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="create_style">
+        <return-value transfer-ownership="full">
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+      </virtual-method>
+      <method name="copy"
+              c:identifier="gtk_rc_style_copy"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="RcStyle" c:type="GtkRcStyle*"/>
+        </return-value>
+      </method>
+      <method name="ref" c:identifier="gtk_rc_style_ref">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unref" c:identifier="gtk_rc_style_unref">
+        <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="name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="bg_pixmap_name">
+        <array zero-terminated="0" c:type="gchar*" fixed-size="5">
+          <type name="utf8"/>
+        </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"/>
+        </array>
+      </field>
+      <field name="fg">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color"/>
+        </array>
+      </field>
+      <field name="bg">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color"/>
+        </array>
+      </field>
+      <field name="text">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color"/>
+        </array>
+      </field>
+      <field name="base">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color"/>
+        </array>
+      </field>
+      <field name="xthickness">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="ythickness">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="rc_properties">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="rc_style_lists">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="icon_factories">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="engine_specified" bits="1">
+        <type name="uint" 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">
+        <callback name="create_rc_style" c:type="create_rc_style">
+          <return-value transfer-ownership="full">
+            <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" c:type="parse">
+          <return-value transfer-ownership="none">
+            <type name="uint" 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" c:type="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">
+        <callback name="create_style" c:type="create_style">
+          <return-value transfer-ownership="full">
+            <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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_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: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"
+                   doc="action, or %NULL
+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()."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="RecentAction" c:type="GtkAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="label"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the label displayed in menu items and on buttons, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tooltip"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a tooltip for the action, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_for_manager"
+                   c:identifier="gtk_recent_action_new_for_manager"
+                   doc="action, or %NULL
+#GtkRecentManager
+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()."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="RecentAction" c:type="GtkAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="label"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the label displayed in menu items and on buttons, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tooltip"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a tooltip for the action, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="manager"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkRecentManager, or %NULL for using the default">
+            <type name="RecentManager" c:type="GtkRecentManager*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_show_numbers"
+              c:identifier="gtk_recent_action_get_show_numbers"
+              doc="Returns the value set by gtk_recent_chooser_menu_set_show_numbers()."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_show_numbers"
+              c:identifier="gtk_recent_action_set_show_numbers"
+              doc="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&apos;s
+label. Only the first ten items get a number to avoid clashes."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_numbers" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="show-numbers" writable="1">
+        <type name="boolean" c:type="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">
+    </record>
+    <interface name="RecentChooser"
+               c:type="GtkRecentChooser"
+               glib:type-name="GtkRecentChooser"
+               glib:get-type="gtk_recent_chooser_get_type"
+               glib:type-struct="RecentChooserIface">
+      <virtual-method name="set_current_uri"
+                      invoker="set_current_uri"
+                      throws="1">
+        <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>
+      <virtual-method name="get_current_uri" invoker="get_current_uri">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="select_uri" invoker="select_uri" throws="1">
+        <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>
+      <virtual-method name="unselect_uri" invoker="unselect_uri">
+        <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>
+      </virtual-method>
+      <virtual-method name="select_all" invoker="select_all">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="unselect_all" invoker="unselect_all">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_items" invoker="get_items">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_recent_manager">
+        <return-value transfer-ownership="full">
+          <type name="RecentManager" c:type="GtkRecentManager*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="add_filter" invoker="add_filter">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none">
+            <type name="RecentFilter" c:type="GtkRecentFilter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="remove_filter" invoker="remove_filter">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none">
+            <type name="RecentFilter" c:type="GtkRecentFilter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="list_filters" invoker="list_filters">
+        <return-value transfer-ownership="full">
+          <type name="GLib.SList" c:type="GSList*"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="set_sort_func">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_func" transfer-ownership="none">
+            <type name="RecentSortFunc" c:type="GtkRecentSortFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_show_private"
+              c:identifier="gtk_recent_chooser_set_show_private"
+              doc="Whether to show recently used resources marked registered as private."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_private" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_show_private"
+              c:identifier="gtk_recent_chooser_get_show_private"
+              doc="Returns whether @chooser should display recently used resources
+registered as private.
+%FALSE otherwise."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_show_not_found"
+              c:identifier="gtk_recent_chooser_set_show_not_found"
+              doc="Sets whether @chooser should display the recently used resources that
+it didn&apos;t find.  This only applies to local resources."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_not_found" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_show_not_found"
+              c:identifier="gtk_recent_chooser_get_show_not_found"
+              doc="Retrieves whether @chooser should show the recently used resources that
+were not found.
+%FALSE otheriwse."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_select_multiple"
+              c:identifier="gtk_recent_chooser_set_select_multiple"
+              doc="Sets whether @chooser can select multiple items."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="select_multiple" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_select_multiple"
+              c:identifier="gtk_recent_chooser_get_select_multiple"
+              doc="Gets whether @chooser can select multiple items."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_limit"
+              c:identifier="gtk_recent_chooser_set_limit"
+              doc="Sets the number of items that should be returned by
+gtk_recent_chooser_get_items() and gtk_recent_chooser_get_uris()."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="limit" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_limit"
+              c:identifier="gtk_recent_chooser_get_limit"
+              doc="Gets the number of items returned by gtk_recent_chooser_get_items()
+and gtk_recent_chooser_get_uris().
+returned."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_local_only"
+              c:identifier="gtk_recent_chooser_set_local_only"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="local_only" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_local_only"
+              c:identifier="gtk_recent_chooser_get_local_only"
+              doc="Gets whether only local resources should be shown in the recently used
+resources selector.  See gtk_recent_chooser_set_local_only()"
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_show_tips"
+              c:identifier="gtk_recent_chooser_set_show_tips"
+              doc="Sets whether to show a tooltips containing the full path of each
+recently used resource in a #GtkRecentChooser widget."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_tips" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_show_tips"
+              c:identifier="gtk_recent_chooser_get_show_tips"
+              doc="Gets whether @chooser should display tooltips containing the full path
+of a recently user resource.
+%FALSE otherwise."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_show_numbers"
+              c:identifier="gtk_recent_chooser_set_show_numbers"
+              doc="Whether to show recently used resources prepended by a unique number."
+              version="2.10"
+              deprecated="Use gtk_recent_chooser_menu_set_show_numbers() instead."
+              deprecated-version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_numbers" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_show_numbers"
+              c:identifier="gtk_recent_chooser_get_show_numbers"
+              doc="Returns whether @chooser should display recently used resources
+prepended by a unique number.
+%FALSE otherwise."
+              version="2.10"
+              deprecated="use gtk_recent_chooser_menu_get_show_numbers() instead."
+              deprecated-version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_show_icons"
+              c:identifier="gtk_recent_chooser_set_show_icons"
+              doc="Sets whether @chooser should show an icon near the resource when
+displaying it."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_icons" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_show_icons"
+              c:identifier="gtk_recent_chooser_get_show_icons"
+              doc="Retrieves whether @chooser should show an icon near the resource."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_sort_type"
+              c:identifier="gtk_recent_chooser_set_sort_type"
+              doc="Changes the sorting order of the recently used resources list displayed by"
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_type" transfer-ownership="none">
+            <type name="RecentSortType" c:type="GtkRecentSortType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sort_type"
+              c:identifier="gtk_recent_chooser_get_sort_type"
+              doc="Gets the value set by gtk_recent_chooser_set_sort_type()."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="RecentSortType" c:type="GtkRecentSortType"/>
+        </return-value>
+      </method>
+      <method name="set_sort_func"
+              c:identifier="gtk_recent_chooser_set_sort_func"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="RecentSortFunc" c:type="GtkRecentSortFunc"/>
+          </parameter>
+          <parameter name="sort_data"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="user data to pass to @sort_func, or %NULL">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="data_destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="call"
+                     doc="destroy notifier for @sort_data, or %NULL">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_current_uri"
+              c:identifier="gtk_recent_chooser_set_current_uri"
+              doc="Sets @uri as the current URI for @chooser."
+              version="2.10"
+              throws="1">
+        <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="get_current_uri"
+              c:identifier="gtk_recent_chooser_get_current_uri"
+              doc="Gets the URI currently selected by @chooser."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_current_item"
+              c:identifier="gtk_recent_chooser_get_current_item"
+              doc="Gets the #GtkRecentInfo currently selected by @chooser.
+when you have finished using it."
+              version="2.10">
+        <return-value transfer-ownership="full" doc="when">
+          <type name="RecentInfo" c:type="GtkRecentInfo*"/>
+        </return-value>
+      </method>
+      <method name="select_uri"
+              c:identifier="gtk_recent_chooser_select_uri"
+              doc="Selects @uri inside @chooser."
+              version="2.10"
+              throws="1">
+        <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="unselect_uri"
+              c:identifier="gtk_recent_chooser_unselect_uri"
+              doc="Unselects @uri inside @chooser."
+              version="2.10">
+        <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>
+      <method name="select_all"
+              c:identifier="gtk_recent_chooser_select_all"
+              doc="Selects all the items inside @chooser, if the @chooser supports
+multiple selection."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unselect_all"
+              c:identifier="gtk_recent_chooser_unselect_all"
+              doc="Unselects all the items inside @chooser."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_items"
+              c:identifier="gtk_recent_chooser_get_items"
+              doc="Gets the list of recently used resources in form of #GtkRecentInfo objects.
+The return value of this function is affected by the &quot;sort-type&quot; and
+&quot;limit&quot; 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()."
+              version="2.10">
+        <return-value transfer-ownership="full" doc="A newly allocated">
+          <type name="GLib.List" c:type="GList*">
+            <type name="RecentInfo"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_uris"
+              c:identifier="gtk_recent_chooser_get_uris"
+              doc="Gets the URI of the recently used resources.
+The return value of this function is affected by the &quot;sort-type&quot; and &quot;limit&quot;
+properties of @chooser.
+Since the returned array is %NULL terminated, @length may be %NULL.
+g_strfreev() to free it."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="length"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for a the length of the URI list, or %NULL">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_filter"
+              c:identifier="gtk_recent_chooser_add_filter"
+              doc="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()."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none">
+            <type name="RecentFilter" c:type="GtkRecentFilter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_filter"
+              c:identifier="gtk_recent_chooser_remove_filter"
+              doc="Removes @filter from the list of #GtkRecentFilter objects held by @chooser."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none">
+            <type name="RecentFilter" c:type="GtkRecentFilter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_filters"
+              c:identifier="gtk_recent_chooser_list_filters"
+              doc="Gets the #GtkRecentFilter objects held by @chooser.
+of #GtkRecentFilter objects.  You
+should just free the returned list using g_slist_free()."
+              version="2.10">
+        <return-value transfer-ownership="container"
+                      doc="A singly linked list">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="RecentFilter"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="set_filter"
+              c:identifier="gtk_recent_chooser_set_filter"
+              doc="Sets @filter as the current #GtkRecentFilter object used by @chooser
+to affect the displayed recently used resources."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter" transfer-ownership="none">
+            <type name="RecentFilter" c:type="GtkRecentFilter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_filter"
+              c:identifier="gtk_recent_chooser_get_filter"
+              doc="Gets the #GtkRecentFilter object currently used by @chooser to affect
+the display of the recently used resources."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="RecentFilter" c:type="GtkRecentFilter*"/>
+        </return-value>
+      </method>
+      <property name="filter"
+                version="2.10"
+                writable="1"
+                doc="The #GtkRecentFilter object to be used when displaying
+the recently used resources.">
+        <type name="RecentFilter" c:type="GtkRecentFilter"/>
+      </property>
+      <property name="limit"
+                version="2.10"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="local-only"
+                version="2.10"
+                writable="1"
+                doc="Whether this #GtkRecentChooser should display only local (file:)
+resources.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="recent-manager"
+                version="2.10"
+                readable="0"
+                writable="1"
+                construct-only="1"
+                doc="The #GtkRecentManager instance used by the #GtkRecentChooser to
+display the list of recently used resources.">
+        <type name="RecentManager" c:type="GtkRecentManager"/>
+      </property>
+      <property name="select-multiple"
+                version="2.10"
+                writable="1"
+                doc="Allow the user to select multiple resources.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="show-icons"
+                version="2.10"
+                writable="1"
+                doc="Whether this #GtkRecentChooser should display an icon near the item.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="show-not-found"
+                version="2.10"
+                writable="1"
+                doc="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).">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="show-private" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="show-tips"
+                version="2.10"
+                writable="1"
+                doc="Whether this #GtkRecentChooser should display a tooltip containing the
+full path of the recently used resources.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="sort-type"
+                version="2.10"
+                writable="1"
+                doc="Sorting order to be used when displaying the recently used resources.">
+        <type name="RecentSortType" c:type="GtkRecentSortType"/>
+      </property>
+      <glib:signal name="item-activated">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="selection-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </interface>
+    <class name="RecentChooserDialog"
+           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"/>
+      <constructor name="new"
+                   c:identifier="gtk_recent_chooser_dialog_new"
+                   doc="pairs, ending with %NULL
+Creates a new #GtkRecentChooserDialog.  This function is analogous to
+gtk_dialog_new_with_buttons()."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="RecentChooserDialog" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="title"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Title of the dialog, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Transient parent of the dialog, or %NULL,">
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+          <parameter name="first_button_text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="stock ID or text to go in the first button, or %NULL">
+            <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"
+                   doc="pairs, ending with %NULL
+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."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="RecentChooserDialog" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="title"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Title of the dialog, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Transient parent of the dialog, or %NULL,">
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+          <parameter name="manager" transfer-ownership="none">
+            <type name="RecentManager" c:type="GtkRecentManager*"/>
+          </parameter>
+          <parameter name="first_button_text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="stock ID or text to go in the first button, or %NULL">
+            <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">
+    </record>
+    <enumeration name="RecentChooserError"
+                 glib:type-name="GtkRecentChooserError"
+                 glib:get-type="gtk_recent_chooser_error_get_type"
+                 c:type="GtkRecentChooserError"
+                 glib:error-quark="gtk_recent_chooser_error_quark">
+      <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" c:type="set_current_uri" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_current_uri">
+        <callback name="get_current_uri" c:type="get_current_uri">
+          <return-value transfer-ownership="full">
+            <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" c:type="select_uri" throws="1">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unselect_uri">
+        <callback name="unselect_uri" c:type="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">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_all">
+        <callback name="select_all" c:type="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" c:type="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" c:type="get_items">
+          <return-value transfer-ownership="full">
+            <type name="GLib.List" c:type="GList*"/>
+          </return-value>
+          <parameters>
+            <parameter name="chooser" transfer-ownership="none">
+              <type name="RecentChooser" c:type="GtkRecentChooser*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_recent_manager">
+        <callback name="get_recent_manager" c:type="get_recent_manager">
+          <return-value transfer-ownership="full">
+            <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" c:type="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">
+              <type name="RecentFilter" c:type="GtkRecentFilter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="remove_filter">
+        <callback name="remove_filter" c:type="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">
+              <type name="RecentFilter" c:type="GtkRecentFilter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="list_filters">
+        <callback name="list_filters" c:type="list_filters">
+          <return-value transfer-ownership="full">
+            <type name="GLib.SList" c:type="GSList*"/>
+          </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" c:type="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">
+              <type name="RecentSortFunc" c:type="GtkRecentSortFunc"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+            <parameter name="destroy" transfer-ownership="none">
+              <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="item_activated">
+        <callback name="item_activated" c:type="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" c:type="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:type="GtkRecentChooserMenu"
+           parent="Menu"
+           glib:type-name="GtkRecentChooserMenu"
+           glib:get-type="gtk_recent_chooser_menu_get_type"
+           glib:type-struct="RecentChooserMenuClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="RecentChooser"/>
+      <constructor name="new"
+                   c:identifier="gtk_recent_chooser_menu_new"
+                   doc="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."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="RecentChooserMenu" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_for_manager"
+                   c:identifier="gtk_recent_chooser_menu_new_for_manager"
+                   doc="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."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="RecentChooserMenu" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="manager" transfer-ownership="none">
+            <type name="RecentManager" c:type="GtkRecentManager*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_show_numbers"
+              c:identifier="gtk_recent_chooser_menu_get_show_numbers"
+              doc="Returns the value set by gtk_recent_chooser_menu_set_show_numbers()."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_show_numbers"
+              c:identifier="gtk_recent_chooser_menu_set_show_numbers"
+              doc="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&apos;s label.  Only the first the items
+get a number to avoid clashes."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_numbers" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="show-numbers" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Menu" c:type="GtkMenu"/>
+      </field>
+      <field name="priv">
+        <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="recent1">
+        <callback name="recent1" c:type="gtk_recent1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="recent2">
+        <callback name="recent2" c:type="gtk_recent2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="recent3">
+        <callback name="recent3" c:type="gtk_recent3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="recent4">
+        <callback name="recent4" c:type="gtk_recent4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="RecentChooserMenuPrivate"
+            c:type="GtkRecentChooserMenuPrivate">
+    </record>
+    <class name="RecentChooserWidget"
+           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"/>
+      <constructor name="new"
+                   c:identifier="gtk_recent_chooser_widget_new"
+                   doc="Creates a new #GtkRecentChooserWidget object.  This is an embeddable widget
+used to access the recently used resources list."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="RecentChooserWidget" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_for_manager"
+                   c:identifier="gtk_recent_chooser_widget_new_for_manager"
+                   doc="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."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="RecentChooserWidget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="manager" transfer-ownership="none">
+            <type name="RecentManager" c:type="GtkRecentManager*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <field name="parent_instance">
+        <type name="VBox" c:type="GtkVBox"/>
+      </field>
+      <field name="priv">
+        <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">
+    </record>
+    <record name="RecentData"
+            c:type="GtkRecentData"
+            doc="used resource to be displayed, or %NULL;
+the resource, or %NULL;
+used resource;
+&quot;&amp;percnt;f&quot; and &quot;&amp;percnt;u&quot; escape characters which will be expanded
+to the resource file path and URI respectively when the command line
+is retrieved;
+applications that have registered it or not.
+Meta-data to be passed to gtk_recent_manager_add_full() when
+registering a recently used resource.">
+      <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="boolean" c:type="gboolean"/>
+      </field>
+    </record>
+    <class name="RecentFilter"
+           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"
+                   doc="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, &quot;*&quot;);
+]|"
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="RecentFilter" c:type="GtkRecentFilter*"/>
+        </return-value>
+      </constructor>
+      <method name="set_name"
+              c:identifier="gtk_recent_filter_set_name"
+              doc="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."
+              version="2.10">
+        <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_name"
+              c:identifier="gtk_recent_filter_get_name"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="add_mime_type"
+              c:identifier="gtk_recent_filter_add_mime_type"
+              doc="Adds a rule that allows resources based on their registered MIME type."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mime_type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_pattern"
+              c:identifier="gtk_recent_filter_add_pattern"
+              doc="Adds a rule that allows resources based on a pattern matching their
+display name."
+              version="2.10">
+        <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="add_pixbuf_formats"
+              c:identifier="gtk_recent_filter_add_pixbuf_formats"
+              doc="Adds a rule allowing image files in the formats supported
+by GdkPixbuf."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add_application"
+              c:identifier="gtk_recent_filter_add_application"
+              doc="Adds a rule that allows resources based on the name of the application
+that has registered them."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="application" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_group"
+              c:identifier="gtk_recent_filter_add_group"
+              doc="Adds a rule that allows resources based on the name of the group
+to which they belong"
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_age"
+              c:identifier="gtk_recent_filter_add_age"
+              doc="Adds a rule that allows resources based on their age - that is, the number
+of days elapsed since they were last modified."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="days" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_custom"
+              c:identifier="gtk_recent_filter_add_custom"
+              doc="filter function needs.
+the file will be displayed.
+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&apos;t needed by the filter."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="needed" transfer-ownership="none">
+            <type name="RecentFilterFlags" c:type="GtkRecentFilterFlags"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <type name="RecentFilterFunc" c:type="GtkRecentFilterFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="data_destroy"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_needed"
+              c:identifier="gtk_recent_filter_get_needed"
+              doc="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()"
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="RecentFilterFlags" c:type="GtkRecentFilterFlags"/>
+        </return-value>
+      </method>
+      <method name="filter"
+              c:identifier="gtk_recent_filter_filter"
+              doc="about a recently used resource
+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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter_info" transfer-ownership="none">
+            <type name="RecentFilterInfo" c:type="GtkRecentFilterInfo*"/>
+          </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="boolean" 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="any" 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="int" c:type="gint"/>
+      </field>
+    </record>
+    <record name="RecentInfo"
+            c:type="GtkRecentInfo"
+            glib:type-name="GtkRecentInfo"
+            glib:get-type="gtk_recent_info_get_type">
+      <method name="ref"
+              c:identifier="gtk_recent_info_ref"
+              doc="Increases the reference count of @recent_info by one.
+by one."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="RecentInfo" c:type="GtkRecentInfo*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gtk_recent_info_unref"
+              doc="Decreases the reference count of @info by one.  If the reference
+count reaches zero, @info is deallocated, and the memory freed."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_uri"
+              c:identifier="gtk_recent_info_get_uri"
+              doc="Gets the URI of the resource.
+owned by the recent manager, and should not be freed."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_display_name"
+              c:identifier="gtk_recent_info_get_display_name"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_description"
+              c:identifier="gtk_recent_info_get_description"
+              doc="Gets the (short) description of the resource.
+is owned by the recent manager, and should not be freed."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_mime_type"
+              c:identifier="gtk_recent_info_get_mime_type"
+              doc="Gets the MIME type of the resource.
+is owned by the recent manager, and should not be freed."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_added"
+              c:identifier="gtk_recent_info_get_added"
+              doc="Gets the timestamp (seconds from system&apos;s Epoch) when the resource
+was added to the recently used resources list.
+the resource was added to the list, or -1 on failure."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="time_t" c:type="time_t"/>
+        </return-value>
+      </method>
+      <method name="get_modified"
+              c:identifier="gtk_recent_info_get_modified"
+              doc="Gets the timestamp (seconds from system&apos;s Epoch) when the resource
+was last modified.
+the resource was last modified, or -1 on failure."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="time_t" c:type="time_t"/>
+        </return-value>
+      </method>
+      <method name="get_visited"
+              c:identifier="gtk_recent_info_get_visited"
+              doc="Gets the timestamp (seconds from system&apos;s Epoch) when the resource
+was last visited.
+the resource was last visited, or -1 on failure."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="time_t" c:type="time_t"/>
+        </return-value>
+      </method>
+      <method name="get_private_hint"
+              c:identifier="gtk_recent_info_get_private_hint"
+              doc="Gets the value of the &quot;private&quot; 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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_application_info"
+              c:identifier="gtk_recent_info_get_application_info"
+              doc="for this application
+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"
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="app_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="app_exec"
+                     direction="out"
+                     transfer-ownership="none"
+                     doc="return location for the string containing the command line">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="count"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="return location for the number of times this item was registered">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+          <parameter name="time_"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="return location for the timestamp this item was last registered">
+            <type name="time_t" c:type="time_t*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_applications"
+              c:identifier="gtk_recent_info_get_applications"
+              doc="Retrieves the list of applications that have registered this resource.
+%NULL-terminated array of strings. Use g_strfreev() to free it."
+              version="2.10">
+        <return-value transfer-ownership="full" doc="a newly allocated">
+          <array length="1" c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="length"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the length of the returned list">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="last_application"
+              c:identifier="gtk_recent_info_last_application"
+              doc="Gets the name of the last application that have registered the
+recently used resource represented by @info."
+              version="2.10">
+        <return-value transfer-ownership="full" doc="to free it.">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="has_application"
+              c:identifier="gtk_recent_info_has_application"
+              doc="Checks whether an application registered this resource using @app_name.
+%FALSE otherwise."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="app_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_groups"
+              c:identifier="gtk_recent_info_get_groups"
+              doc="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.
+%NULL terminated array of strings.  Use g_strfreev() to free it."
+              version="2.10">
+        <return-value transfer-ownership="full" doc="a newly allocated">
+          <array length="1" c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="length"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the number of groups returned">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_group"
+              c:identifier="gtk_recent_info_has_group"
+              doc="Checks whether @group_name appears inside the groups registered for the
+recently used item @info."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon"
+              c:identifier="gtk_recent_info_get_icon"
+              doc="Retrieves the icon of size @size associated to the resource MIME type.
+g_object_unref() when finished using the icon."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_short_name"
+              c:identifier="gtk_recent_info_get_short_name"
+              doc="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
+&quot;file:///foo/bar.txt&quot; will yield &quot;bar.txt&quot;.
+g_free()."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_uri_display"
+              c:identifier="gtk_recent_info_get_uri_display"
+              doc="Gets a displayable version of the resource&apos;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&apos;s URI or %NULL. Use g_free() when done using it."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_age"
+              c:identifier="gtk_recent_info_get_age"
+              doc="Gets the number of days elapsed since the last update of the resource
+pointed by @info.
+since the time this resource was last modified."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="is_local"
+              c:identifier="gtk_recent_info_is_local"
+              doc="Checks whether the resource is local or not by looking at the
+scheme of its URI."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="exists"
+              c:identifier="gtk_recent_info_exists"
+              doc="Checks whether the resource pointed by @info still exists.  At
+the moment this check is done only on resources pointing to local files."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="match"
+              c:identifier="gtk_recent_info_match"
+              doc="Checks whether two #GtkRecentInfo structures point to the same
+resource.
+resource, %FALSE otherwise."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="info_b" transfer-ownership="none">
+            <type name="RecentInfo" c:type="GtkRecentInfo*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <class name="RecentManager"
+           c:type="GtkRecentManager"
+           parent="GObject.Object"
+           glib:type-name="GtkRecentManager"
+           glib:get-type="gtk_recent_manager_get_type"
+           glib:type-struct="RecentManagerClass">
+      <constructor name="new"
+                   c:identifier="gtk_recent_manager_new"
+                   doc="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 &quot;changed&quot; signal
+each time something inside the list changes.
+needed. You should use gtk_recent_manager_get_default() instead."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="RecentManager" c:type="GtkRecentManager*"/>
+        </return-value>
+      </constructor>
+      <function name="get_default"
+                c:identifier="gtk_recent_manager_get_default"
+                doc="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."
+                version="2.10">
+        <return-value transfer-ownership="none"
+                      doc="A unique #GtkRecentManager. Do not ref or unref it.">
+          <type name="RecentManager" c:type="GtkRecentManager*"/>
+        </return-value>
+      </function>
+      <function name="get_for_screen"
+                c:identifier="gtk_recent_manager_get_for_screen"
+                doc="Gets the recent manager object associated with @screen; if this
+function has not previously been called for the given screen,
+a new recent manager object will be created and associated with
+the screen. Recent manager objects are fairly expensive to create,
+so using this function is usually a better choice than calling
+gtk_recent_manager_new() and setting the screen yourself; by using
+this function a single recent manager object will be shared between
+users.
+screen. This recent manager is associated to the with the screen
+and can be used as long as the screen is open. Do not ref or
+unref it.
+not be used in newly written code. Calling this function is
+equivalent to calling gtk_recent_manager_get_default()."
+                version="2.10"
+                deprecated="This function has been deprecated and should"
+                deprecated-version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="RecentManager" c:type="GtkRecentManager*"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <type name="Gdk.Screen" c:type="GdkScreen*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="set_screen"
+              c:identifier="gtk_recent_manager_set_screen"
+              doc="Sets the screen for a recent manager; the screen is used to
+track the user&apos;s currently configured recently used documents
+storage.
+not be used in newly written code. Calling this function has
+no effect."
+              version="2.10"
+              deprecated="This function has been deprecated and should"
+              deprecated-version="2.12">
+        <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="add_item"
+              c:identifier="gtk_recent_manager_add_item"
+              doc="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"
+              version="2.10">
+        <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="add_full"
+              c:identifier="gtk_recent_manager_add_full"
+              doc="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."
+              version="2.10">
+        <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="recent_data" transfer-ownership="none">
+            <type name="RecentData" c:type="GtkRecentData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_item"
+              c:identifier="gtk_recent_manager_remove_item"
+              doc="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."
+              version="2.10"
+              throws="1">
+        <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="lookup_item"
+              c:identifier="gtk_recent_manager_lookup_item"
+              doc="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()."
+              version="2.10"
+              throws="1">
+        <return-value transfer-ownership="full">
+          <type name="RecentInfo" c:type="GtkRecentInfo*"/>
+        </return-value>
+        <parameters>
+          <parameter name="uri" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_item"
+              c:identifier="gtk_recent_manager_has_item"
+              doc="Checks whether there is a recently used resource registered
+with @uri inside the recent manager."
+              version="2.10">
+        <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="move_item"
+              c:identifier="gtk_recent_manager_move_item"
+              doc="remove the item pointed by @uri in the list
+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."
+              version="2.10"
+              throws="1">
+        <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="new_uri"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the new URI of the recently used resource, or %NULL to">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_limit"
+              c:identifier="gtk_recent_manager_set_limit"
+              doc="Sets the maximum number of item that the gtk_recent_manager_get_items()
+function should return.  If @limit is set to -1, then return all the
+items."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="limit" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_limit"
+              c:identifier="gtk_recent_manager_get_limit"
+              doc="Gets the maximum number of items that the gtk_recent_manager_get_items()
+function should return."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_items"
+              c:identifier="gtk_recent_manager_get_items"
+              doc="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()."
+              version="2.10">
+        <return-value transfer-ownership="full" doc="a list of">
+          <type name="GLib.List" c:type="GList*">
+            <type name="RecentInfo"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="purge_items"
+              c:identifier="gtk_recent_manager_purge_items"
+              doc="Purges every item from the recently used resources list.
+recently used resources list."
+              version="2.10"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <property name="filename" writable="1" construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="limit" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="size">
+        <type name="int" c:type="gint"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="priv">
+        <type name="RecentManagerPrivate" c:type="GtkRecentManagerPrivate*"/>
+      </field>
+      <glib:signal name="changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="RecentManagerClass"
+            c:type="GtkRecentManagerClass"
+            glib:is-gtype-struct-for="RecentManager">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="changed">
+        <callback name="changed" c:type="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">
+        <callback name="gtk_recent1" c:type="_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" c:type="_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" c:type="_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" c:type="_gtk_recent4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="RecentManagerError"
+                 doc="the recently used resources list.
+UTF-8 encoded.
+the specified item.
+resources file.
+resources file.
+Error codes for GtkRecentManager operations"
+                 glib:type-name="GtkRecentManagerError"
+                 glib:get-type="gtk_recent_manager_error_get_type"
+                 c:type="GtkRecentManagerError"
+                 glib:error-quark="gtk_recent_manager_error_quark">
+      <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">
+    </record>
+    <callback name="RecentSortFunc" c:type="GtkRecentSortFunc">
+      <return-value transfer-ownership="none">
+        <type name="int" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="RecentSortType"
+                 doc="resources.
+items first.
+items first.
+function passed using gtk_recent_manager_set_sort_func().
+Used to specify the sorting method to be applyed to the recently
+used resource list."
+                 glib:type-name="GtkRecentSortType"
+                 glib:get-type="gtk_recent_sort_type_get_type"
+                 c:type="GtkRecentSortType">
+      <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="Requisition"
+            c:type="GtkRequisition"
+            doc="A &lt;structname&gt;GtkRequisition&lt;/structname&gt; represents the desired size of a widget. See
+&lt;xref linkend=&quot;size-requisition&quot;/&gt; for more information."
+            glib:type-name="GtkRequisition"
+            glib:get-type="gtk_requisition_get_type">
+      <field name="width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <method name="copy"
+              c:identifier="gtk_requisition_copy"
+              doc="Copies a #GtkRequisition.">
+        <return-value transfer-ownership="full">
+          <type name="Requisition" c:type="GtkRequisition*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gtk_requisition_free"
+              doc="Frees a #GtkRequisition.">
+        <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: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"/>
+      <virtual-method name="draw_ticks" invoker="draw_ticks">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="draw_pos" invoker="draw_pos">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-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="get_metric"
+              c:identifier="gtk_ruler_get_metric"
+              doc="Gets the units used for a #GtkRuler. See gtk_ruler_set_metric().">
+        <return-value transfer-ownership="full">
+          <type name="MetricType" c:type="GtkMetricType"/>
+        </return-value>
+      </method>
+      <method name="set_range"
+              c:identifier="gtk_ruler_set_range"
+              doc="leave for the text
+This sets the range of the ruler.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="lower" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="upper" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="max_size" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_range"
+              c:identifier="gtk_ruler_get_range"
+              doc="the space to leave for the text, or %NULL.
+Retrieves values indicating the range and current position of a #GtkRuler.
+See gtk_ruler_set_range().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="lower"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store lower limit of the ruler, or %NULL">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="upper"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store upper limit of the ruler, or %NULL">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="position"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the current position of the mark on the ruler, or %NULL">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="max_size" direction="out" transfer-ownership="full">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </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="draw_pos" c:identifier="gtk_ruler_draw_pos">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="lower" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="max-size" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="metric"
+                version="2.8"
+                writable="1"
+                doc="The metric used for the ruler.">
+        <type name="MetricType" c:type="GtkMetricType"/>
+      </property>
+      <property name="position" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="upper" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </field>
+      <field name="backing_store">
+        <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+      </field>
+      <field name="non_gr_exp_gc">
+        <type name="Gdk.GC" c:type="GdkGC*"/>
+      </field>
+      <field name="metric">
+        <type name="RulerMetric" c:type="GtkRulerMetric*"/>
+      </field>
+      <field name="xsrc">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="ysrc">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="slider_size">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="lower">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="upper">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="position">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="max_size">
+        <type name="double" c:type="gdouble"/>
+      </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" c:type="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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_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="double" c:type="gdouble"/>
+      </field>
+      <field name="ruler_scale" writable="1">
+        <array zero-terminated="0" c:type="gdouble" fixed-size="10">
+          <type name="double"/>
+        </array>
+      </field>
+      <field name="subdivide" writable="1">
+        <array zero-terminated="0" c:type="gint" fixed-size="5">
+          <type name="int"/>
+        </array>
+      </field>
+    </record>
+    <constant name="STOCK_ABOUT" value="gtk-about">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_ADD" value="gtk-add">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_APPLY" value="gtk-apply">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_BOLD" value="gtk-bold">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_CANCEL" value="gtk-cancel">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_CAPS_LOCK_WARNING" value="gtk-caps-lock-warning">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_CDROM" value="gtk-cdrom">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_CLEAR" value="gtk-clear">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_CLOSE" value="gtk-close">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_COLOR_PICKER" value="gtk-color-picker">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_CONNECT" value="gtk-connect">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_CONVERT" value="gtk-convert">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_COPY" value="gtk-copy">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_CUT" value="gtk-cut">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_DELETE" value="gtk-delete">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_DIALOG_AUTHENTICATION"
+              value="gtk-dialog-authentication">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_DIALOG_ERROR" value="gtk-dialog-error">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_DIALOG_INFO" value="gtk-dialog-info">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_DIALOG_QUESTION" value="gtk-dialog-question">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_DIALOG_WARNING" value="gtk-dialog-warning">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_DIRECTORY" value="gtk-directory">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_DISCARD" value="gtk-discard">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_DISCONNECT" value="gtk-disconnect">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_DND" value="gtk-dnd">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_DND_MULTIPLE" value="gtk-dnd-multiple">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_EDIT" value="gtk-edit">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_EXECUTE" value="gtk-execute">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_FILE" value="gtk-file">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_FIND" value="gtk-find">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_FIND_AND_REPLACE" value="gtk-find-and-replace">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_FLOPPY" value="gtk-floppy">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_FULLSCREEN" value="gtk-fullscreen">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_GOTO_BOTTOM" value="gtk-goto-bottom">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_GOTO_FIRST" value="gtk-goto-first">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_GOTO_LAST" value="gtk-goto-last">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_GOTO_TOP" value="gtk-goto-top">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_GO_BACK" value="gtk-go-back">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_GO_DOWN" value="gtk-go-down">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_GO_FORWARD" value="gtk-go-forward">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_GO_UP" value="gtk-go-up">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_HARDDISK" value="gtk-harddisk">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_HELP" value="gtk-help">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_HOME" value="gtk-home">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_INDENT" value="gtk-indent">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_INDEX" value="gtk-index">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_INFO" value="gtk-info">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_ITALIC" value="gtk-italic">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_JUMP_TO" value="gtk-jump-to">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_JUSTIFY_CENTER" value="gtk-justify-center">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_JUSTIFY_FILL" value="gtk-justify-fill">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_JUSTIFY_LEFT" value="gtk-justify-left">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_JUSTIFY_RIGHT" value="gtk-justify-right">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_LEAVE_FULLSCREEN" value="gtk-leave-fullscreen">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_MEDIA_FORWARD" value="gtk-media-forward">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_MEDIA_NEXT" value="gtk-media-next">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_MEDIA_PAUSE" value="gtk-media-pause">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_MEDIA_PLAY" value="gtk-media-play">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_MEDIA_PREVIOUS" value="gtk-media-previous">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_MEDIA_RECORD" value="gtk-media-record">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_MEDIA_REWIND" value="gtk-media-rewind">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_MEDIA_STOP" value="gtk-media-stop">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_MISSING_IMAGE" value="gtk-missing-image">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_NETWORK" value="gtk-network">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_NEW" value="gtk-new">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_NO" value="gtk-no">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_OK" value="gtk-ok">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_OPEN" value="gtk-open">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_ORIENTATION_LANDSCAPE"
+              value="gtk-orientation-landscape">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_ORIENTATION_PORTRAIT"
+              value="gtk-orientation-portrait">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_ORIENTATION_REVERSE_LANDSCAPE"
+              value="gtk-orientation-reverse-landscape">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_ORIENTATION_REVERSE_PORTRAIT"
+              value="gtk-orientation-reverse-portrait">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_PAGE_SETUP" value="gtk-page-setup">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_PASTE" value="gtk-paste">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_PREFERENCES" value="gtk-preferences">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_PRINT" value="gtk-print">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_PRINT_ERROR" value="gtk-print-error">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_PRINT_PAUSED" value="gtk-print-paused">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_PRINT_PREVIEW" value="gtk-print-preview">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_PRINT_REPORT" value="gtk-print-report">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_PRINT_WARNING" value="gtk-print-warning">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_PROPERTIES" value="gtk-properties">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_QUIT" value="gtk-quit">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_REDO" value="gtk-redo">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_REFRESH" value="gtk-refresh">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_REMOVE" value="gtk-remove">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_REVERT_TO_SAVED" value="gtk-revert-to-saved">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_SAVE" value="gtk-save">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_SAVE_AS" value="gtk-save-as">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_SELECT_ALL" value="gtk-select-all">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_SELECT_COLOR" value="gtk-select-color">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_SELECT_FONT" value="gtk-select-font">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_SORT_ASCENDING" value="gtk-sort-ascending">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_SORT_DESCENDING" value="gtk-sort-descending">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_SPELL_CHECK" value="gtk-spell-check">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_STOP" value="gtk-stop">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_STRIKETHROUGH" value="gtk-strikethrough">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_UNDELETE" value="gtk-undelete">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_UNDERLINE" value="gtk-underline">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_UNDO" value="gtk-undo">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_UNINDENT" value="gtk-unindent">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_YES" value="gtk-yes">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_ZOOM_100" value="gtk-zoom-100">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_ZOOM_FIT" value="gtk-zoom-fit">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_ZOOM_IN" value="gtk-zoom-in">
+      <type name="utf8"/>
+    </constant>
+    <constant name="STOCK_ZOOM_OUT" value="gtk-zoom-out">
+      <type name="utf8"/>
+    </constant>
+    <class name="Scale"
+           c:type="GtkScale"
+           parent="Range"
+           abstract="1"
+           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"/>
+      <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">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_digits"
+              c:identifier="gtk_scale_set_digits"
+              doc="e.g. use 1 to display 1.0, 2 to display 1.00, etc
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="digits" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_digits"
+              c:identifier="gtk_scale_get_digits"
+              doc="Gets the number of decimal places that are displayed in the value.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_draw_value"
+              c:identifier="gtk_scale_set_draw_value"
+              doc="Specifies whether the current value is displayed as a string next
+to the slider.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="draw_value" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_draw_value"
+              c:identifier="gtk_scale_get_draw_value"
+              doc="Returns whether the current value is displayed as a string
+next to the slider.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_value_pos"
+              c:identifier="gtk_scale_set_value_pos"
+              doc="Sets the position in which the current value is displayed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="PositionType" c:type="GtkPositionType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value_pos"
+              c:identifier="gtk_scale_get_value_pos"
+              doc="Gets the position in which the current value is displayed.">
+        <return-value transfer-ownership="full">
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </return-value>
+      </method>
+      <method name="get_layout"
+              c:identifier="gtk_scale_get_layout"
+              doc="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.
+if the #GtkScale:draw-value property is %FALSE."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </return-value>
+      </method>
+      <method name="get_layout_offsets"
+              c:identifier="gtk_scale_get_layout_offsets"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store X offset of layout, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store Y offset of layout, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_mark"
+              c:identifier="gtk_scale_add_mark"
+              doc="the lower and upper limits of the scales&apos; adjustment
+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.
+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()."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="PositionType" c:type="GtkPositionType"/>
+          </parameter>
+          <parameter name="markup"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Text to be shown at the mark, using &lt;link linkend=&quot;PangoMarkupFormat&quot;&gt;Pango markup&lt;/link&gt;, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_marks"
+              c:identifier="gtk_scale_clear_marks"
+              doc="Removes any marks that have been added with gtk_scale_add_mark()."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="digits" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="draw-value" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="value-pos" writable="1">
+        <type name="PositionType" c:type="GtkPositionType"/>
+      </property>
+      <field name="range">
+        <type name="Range" c:type="GtkRange"/>
+      </field>
+      <field name="digits">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="draw_value" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="value_pos" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="format-value"
+                   doc="Signal which allows you to change how the scale value is displayed.
+Connect a signal handler which returns an allocated string representing
+Here&apos;s an example signal handler which displays a value 1.0 as
+with &quot;--&amp;gt;1.0&amp;lt;--&quot;.
+|[
+static gchar*
+format_value_callback (GtkScale *scale,
+gdouble   value)
+{
+return g_strdup_printf (&quot;--&amp;gt;&amp;percnt;0.*g&amp;lt;--&quot;,
+gtk_scale_get_digits (scale), value);
+}
+]|">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchararray"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <class name="ScaleButton"
+           c:type="GtkScaleButton"
+           parent="Button"
+           glib:type-name="GtkScaleButton"
+           glib:get-type="gtk_scale_button_get_type"
+           glib:type-struct="ScaleButtonClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <constructor name="new"
+                   c:identifier="gtk_scale_button_new"
+                   doc="or up/down arrow event occurs (usually 2)
+you want to set the list later with gtk_scale_button_set_icons()
+Creates a #GtkScaleButton, with a range between @min and @max, with
+a stepping of @step."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="ScaleButton" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size"
+                     transfer-ownership="none"
+                     doc="a stock icon size">
+            <type name="IconSize" c:type="GtkIconSize"/>
+          </parameter>
+          <parameter name="min" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="max" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="step" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="icons"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a %NULL-terminated array of icon names, or %NULL if">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_icons"
+              c:identifier="gtk_scale_button_set_icons"
+              doc="Sets the icons to be used by the scale button.
+For details, see the #GtkScaleButton:icons property."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icons" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value"
+              c:identifier="gtk_scale_button_get_value"
+              doc="Gets the current value of the scale button."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_value"
+              c:identifier="gtk_scale_button_set_value"
+              doc="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."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_adjustment"
+              c:identifier="gtk_scale_button_get_adjustment"
+              doc="Gets the #GtkAdjustment associated with the #GtkScaleButton&apos;s scale.
+See gtk_range_get_adjustment() for details."
+              version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="set_adjustment"
+              c:identifier="gtk_scale_button_set_adjustment"
+              doc="Sets the #GtkAdjustment to be used as a model
+for the #GtkScaleButton&apos;s scale.
+See gtk_range_set_adjustment() for details."
+              version="2.12">
+        <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>
+      </method>
+      <method name="get_plus_button"
+              c:identifier="gtk_scale_button_get_plus_button"
+              doc="Retrieves the plus button of the #GtkScaleButton."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_minus_button"
+              c:identifier="gtk_scale_button_get_minus_button"
+              doc="Retrieves the minus button of the #GtkScaleButton."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_popup"
+              c:identifier="gtk_scale_button_get_popup"
+              doc="Retrieves the popup of the #GtkScaleButton."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_orientation"
+              c:identifier="gtk_scale_button_get_orientation"
+              doc="Gets the orientation of the #GtkScaleButton&apos;s popup window."
+              version="2.14"
+              deprecated="Use gtk_orientable_get_orientation() instead."
+              deprecated-version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </return-value>
+      </method>
+      <method name="set_orientation"
+              c:identifier="gtk_scale_button_set_orientation"
+              doc="Sets the orientation of the #GtkScaleButton&apos;s popup window."
+              version="2.14"
+              deprecated="Use gtk_orientable_set_orientation() instead."
+              deprecated-version="2.16">
+        <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>
+        </parameters>
+      </method>
+      <property name="adjustment" writable="1">
+        <type name="Adjustment" c:type="GtkAdjustment"/>
+      </property>
+      <property name="icons"
+                version="2.12"
+                writable="1"
+                doc="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&apos;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.">
+        <type name="GObject.Strv" c:type="GStrv"/>
+      </property>
+      <property name="size" writable="1">
+        <type name="IconSize" c:type="GtkIconSize"/>
+      </property>
+      <property name="value" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <field name="parent">
+        <type name="Button" c:type="GtkButton"/>
+      </field>
+      <field name="plus_button">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="minus_button">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="priv">
+        <type name="ScaleButtonPrivate" c:type="GtkScaleButtonPrivate*"/>
+      </field>
+      <glib:signal name="popdown"
+                   doc="The ::popdown signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&gt;keybinding signal&lt;/link&gt;
+which gets emitted to popdown the scale widget.
+The default binding for this signal is Escape."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="popup"
+                   doc="The ::popup signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="value-changed"
+                   doc="The ::value-changed signal is emitted when the value field has
+changed."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="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" c:type="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="double" c:type="gdouble"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ScaleButtonPrivate" c:type="GtkScaleButtonPrivate">
+    </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" c:type="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="double" c:type="gdouble"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_value">
+        <callback name="draw_value" c:type="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" c:type="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" direction="out" transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="y" direction="out" transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </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:type="GtkScrollbar"
+           parent="Range"
+           abstract="1"
+           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"/>
+      <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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="ScrolledWindow"
+           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"/>
+      <constructor name="new"
+                   c:identifier="gtk_scrolled_window_new"
+                   doc="Creates a new scrolled window.
+The two arguments are the scrolled window&apos;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.">
+        <return-value transfer-ownership="full">
+          <type name="ScrolledWindow" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="hadjustment"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="horizontal adjustment">
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="vadjustment"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="vertical adjustment">
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_hadjustment"
+              c:identifier="gtk_scrolled_window_set_hadjustment"
+              doc="Sets the #GtkAdjustment for the horizontal scrollbar.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hadjustment" transfer-ownership="none">
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_vadjustment"
+              c:identifier="gtk_scrolled_window_set_vadjustment"
+              doc="Sets the #GtkAdjustment for the vertical scrollbar.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="vadjustment" transfer-ownership="none">
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_hadjustment"
+              c:identifier="gtk_scrolled_window_get_hadjustment"
+              doc="Returns the horizontal scrollbar&apos;s adjustment, used to connect the
+horizontal scrollbar to the child widget&apos;s horizontal scroll
+functionality.">
+        <return-value transfer-ownership="full">
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_vadjustment"
+              c:identifier="gtk_scrolled_window_get_vadjustment"
+              doc="Returns the vertical scrollbar&apos;s adjustment, used to connect the
+vertical scrollbar to the child widget&apos;s vertical scroll
+functionality.">
+        <return-value transfer-ownership="full">
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_hscrollbar"
+              c:identifier="gtk_scrolled_window_get_hscrollbar"
+              doc="Returns the horizontal scrollbar of @scrolled_window.
+%NULL if it does not have one."
+              version="2.8">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_vscrollbar"
+              c:identifier="gtk_scrolled_window_get_vscrollbar"
+              doc="Returns the vertical scrollbar of @scrolled_window.
+%NULL if it does not have one."
+              version="2.8">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_policy"
+              c:identifier="gtk_scrolled_window_set_policy"
+              doc="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).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hscrollbar_policy" transfer-ownership="none">
+            <type name="PolicyType" c:type="GtkPolicyType"/>
+          </parameter>
+          <parameter name="vscrollbar_policy" transfer-ownership="none">
+            <type name="PolicyType" c:type="GtkPolicyType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_policy"
+              c:identifier="gtk_scrolled_window_get_policy"
+              doc="scrollbar, or %NULL.
+scrollbar, or %NULL.
+Retrieves the current policy values for the horizontal and vertical
+scrollbars. See gtk_scrolled_window_set_policy().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hscrollbar_policy" transfer-ownership="none">
+            <type name="PolicyType" c:type="GtkPolicyType*"/>
+          </parameter>
+          <parameter name="vscrollbar_policy" transfer-ownership="none">
+            <type name="PolicyType" c:type="GtkPolicyType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_placement"
+              c:identifier="gtk_scrolled_window_set_placement"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window_placement" transfer-ownership="none">
+            <type name="CornerType" c:type="GtkCornerType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_placement"
+              c:identifier="gtk_scrolled_window_unset_placement"
+              doc="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 &quot;gtk-scrolled-window-placement&quot; XSETTING.
+See also gtk_scrolled_window_set_placement() and
+gtk_scrolled_window_get_placement()."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_placement"
+              c:identifier="gtk_scrolled_window_get_placement"
+              doc="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().">
+        <return-value transfer-ownership="full">
+          <type name="CornerType" c:type="GtkCornerType"/>
+        </return-value>
+      </method>
+      <method name="set_shadow_type"
+              c:identifier="gtk_scrolled_window_set_shadow_type"
+              doc="Changes the type of shadow drawn around the contents of">
+        <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="get_shadow_type"
+              c:identifier="gtk_scrolled_window_get_shadow_type"
+              doc="Gets the shadow type of the scrolled window. See
+gtk_scrolled_window_set_shadow_type().">
+        <return-value transfer-ownership="full">
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </return-value>
+      </method>
+      <method name="add_with_viewport"
+              c:identifier="gtk_scrolled_window_add_with_viewport"
+              doc="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.">
+        <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>
+      <property name="hadjustment" writable="1" construct="1">
+        <type name="Adjustment" c:type="GtkAdjustment"/>
+      </property>
+      <property name="hscrollbar-policy" writable="1">
+        <type name="PolicyType" c:type="GtkPolicyType"/>
+      </property>
+      <property name="shadow-type" writable="1">
+        <type name="ShadowType" c:type="GtkShadowType"/>
+      </property>
+      <property name="vadjustment" writable="1" construct="1">
+        <type name="Adjustment" c:type="GtkAdjustment"/>
+      </property>
+      <property name="vscrollbar-policy" writable="1">
+        <type name="PolicyType" c:type="GtkPolicyType"/>
+      </property>
+      <property name="window-placement" writable="1">
+        <type name="CornerType" c:type="GtkCornerType"/>
+      </property>
+      <property name="window-placement-set"
+                version="2.10"
+                writable="1"
+                doc="Whether &quot;window-placement&quot; should be used to determine the location
+of the contents with respect to the scrollbars. Otherwise, the
+&quot;gtk-scrolled-window-placement&quot; setting is used.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="container">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+      <field name="hscrollbar">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="vscrollbar">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="hscrollbar_policy" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="vscrollbar_policy" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="hscrollbar_visible" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="vscrollbar_visible" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="window_placement" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="focus_out" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="shadow_type">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <glib:signal name="move-focus-out">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="DirectionType" c:type="GtkDirectionType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="scroll-child">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="ScrollType" c:type="GtkScrollType"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="boolean" c:type="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="int" c:type="gint"/>
+      </field>
+      <field name="scroll_child">
+        <callback name="scroll_child" c:type="scroll_child">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="move_focus_out">
+        <callback name="move_focus_out" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="SelectionData"
+            c:type="GtkSelectionData"
+            glib:type-name="GtkSelectionData"
+            glib:get-type="gtk_selection_data_get_type">
+      <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="int" c:type="gint"/>
+      </field>
+      <field name="data" writable="1">
+        <type name="any" c:type="guchar*"/>
+      </field>
+      <field name="length" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="display" writable="1">
+        <type name="Gdk.Display" c:type="GdkDisplay*"/>
+      </field>
+      <method name="get_selection"
+              c:identifier="gtk_selection_data_get_selection"
+              doc="Retrieves the selection #GdkAtom of the selection data."
+              version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </return-value>
+      </method>
+      <method name="get_target"
+              c:identifier="gtk_selection_data_get_target"
+              doc="Retrieves the target of the selection."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </return-value>
+      </method>
+      <method name="get_data_type"
+              c:identifier="gtk_selection_data_get_data_type"
+              doc="Retrieves the data type of the selection."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </return-value>
+      </method>
+      <method name="get_format"
+              c:identifier="gtk_selection_data_get_format"
+              doc="Retrieves the format of the selection."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_data"
+              c:identifier="gtk_selection_data_get_data"
+              doc="Retrieves the raw data of the selection."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_length"
+              c:identifier="gtk_selection_data_get_length"
+              doc="Retrieves the length of the raw data of the selection."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_display"
+              c:identifier="gtk_selection_data_get_display"
+              doc="Retrieves the display of the selection."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </method>
+      <method name="set"
+              c:identifier="gtk_selection_data_set"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guchar*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text"
+              c:identifier="gtk_selection_data_set_text"
+              doc="Sets the contents of the selection from a UTF-8 encoded string.
+The string is converted to the form determined by
+otherwise %FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text"
+              c:identifier="gtk_selection_data_get_text"
+              doc="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().">
+        <return-value transfer-ownership="full">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="set_pixbuf"
+              c:identifier="gtk_selection_data_set_pixbuf"
+              doc="Sets the contents of the selection from a #GdkPixbuf
+The pixbuf is converted to the form determined by
+otherwise %FALSE."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixbuf"
+              c:identifier="gtk_selection_data_get_pixbuf"
+              doc="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()."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="set_uris"
+              c:identifier="gtk_selection_data_set_uris"
+              doc="Sets the contents of the selection from a list of URIs.
+The string is converted to the form determined by
+otherwise %FALSE."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="uris" transfer-ownership="none">
+            <array c:type="gchar**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_uris"
+              c:identifier="gtk_selection_data_get_uris"
+              doc="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()."
+              version="2.6">
+        <return-value transfer-ownership="full" doc="if">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </return-value>
+      </method>
+      <method name="get_targets"
+              c:identifier="gtk_selection_data_get_targets"
+              doc="stored here must be freed with g_free().
+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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom**"/>
+          </parameter>
+          <parameter name="n_atoms" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="targets_include_text"
+              c:identifier="gtk_selection_data_targets_include_text"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="targets_include_rich_text"
+              c:identifier="gtk_selection_data_targets_include_rich_text"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="targets_include_image"
+              c:identifier="gtk_selection_data_targets_include_image"
+              doc="how to convert a pixbuf into the format
+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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="writable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="targets_include_uri"
+              c:identifier="gtk_selection_data_targets_include_uri"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="gtk_selection_data_copy"
+              doc="Makes a copy of a #GtkSelectionData structure and its data.">
+        <return-value transfer-ownership="full">
+          <type name="SelectionData" c:type="GtkSelectionData*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gtk_selection_data_free"
+              doc="Frees a #GtkSelectionData structure returned from
+gtk_selection_data_copy().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </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"/>
+      <member name="extended"
+              value="3"
+              c:identifier="GTK_SELECTION_EXTENDED"
+              glib:nick="extended"/>
+    </enumeration>
+    <enumeration name="SensitivityType"
+                 glib:type-name="GtkSensitivityType"
+                 glib:get-type="gtk_sensitivity_type_get_type"
+                 c:type="GtkSensitivityType">
+      <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:type="GtkSeparator"
+           parent="Widget"
+           abstract="1"
+           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"/>
+      <field name="widget">
+        <type name="Widget" c:type="GtkWidget"/>
+      </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:type="GtkSeparatorMenuItem"
+           parent="MenuItem"
+           glib:type-name="GtkSeparatorMenuItem"
+           glib:get-type="gtk_separator_menu_item_get_type"
+           glib:type-struct="SeparatorMenuItemClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_separator_menu_item_new">
+        <return-value transfer-ownership="full">
+          <type name="SeparatorMenuItem" 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>
+    <class name="SeparatorToolItem"
+           c:type="GtkSeparatorToolItem"
+           parent="ToolItem"
+           glib:type-name="GtkSeparatorToolItem"
+           glib:get-type="gtk_separator_tool_item_get_type"
+           glib:type-struct="SeparatorToolItemClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_separator_tool_item_new"
+                   doc="Create a new #GtkSeparatorToolItem"
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="SeparatorToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+      </constructor>
+      <method name="get_draw"
+              c:identifier="gtk_separator_tool_item_get_draw"
+              doc="Returns whether @item is drawn as a line, or just blank.
+See gtk_separator_tool_item_set_draw()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_draw"
+              c:identifier="gtk_separator_tool_item_set_draw"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="draw" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="draw" writable="1">
+        <type name="boolean" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="SeparatorToolItemPrivate"
+            c:type="GtkSeparatorToolItemPrivate">
+    </record>
+    <class name="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="Gets the #GtkSettings object for the default GDK screen, creating
+it if necessary. See gtk_settings_get_for_screen().
+screen, then returns %NULL.">
+        <return-value transfer-ownership="none"
+                      doc="a #GtkSettings object. If there is no default">
+          <type name="Settings" c:type="GtkSettings*"/>
+        </return-value>
+      </function>
+      <function name="get_for_screen"
+                c:identifier="gtk_settings_get_for_screen"
+                doc="Gets the #GtkSettings object for @screen, creating it if necessary."
+                version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="Settings" c:type="GtkSettings*"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen" transfer-ownership="none">
+            <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">
+        <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" scope="call">
+            <type name="RcPropertyParser" c:type="GtkRcPropertyParser"/>
+          </parameter>
+        </parameters>
+      </function>
+      <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>
+      <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="long" c:type="glong"/>
+          </parameter>
+          <parameter name="origin" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <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="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="origin" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="color-hash"
+                version="2.10"
+                doc="Holds a hash table representation of the #GtkSettings:gtk-color-scheme
+setting, mapping color names to #GdkColor&lt;!-- --&gt;s.">
+        <type name="GLib.HashTable" c:type="GHashTable"/>
+      </property>
+      <property name="gtk-alternative-button-order" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gtk-alternative-sort-arrows"
+                version="2.12"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gtk-auto-mnemonics"
+                version="2.20"
+                writable="1"
+                doc="Whether mnemonics should be automatically shown and hidden when the user
+presses the mnemonic activator.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gtk-color-scheme"
+                version="2.10"
+                writable="1"
+                doc="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=&quot;gtk-Resource-Files&quot;&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 &apos;;&apos; instead of newlines:
+&lt;programlisting&gt;
+&lt;/programlisting&gt;">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="gtk-cursor-blink"
+                writable="1"
+                doc="Whether the cursor should blink.
+Also see the #GtkSettings:gtk-cursor-blink-timeout setting,
+which allows more flexible control over cursor blinking.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gtk-cursor-blink-time" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="gtk-cursor-blink-timeout"
+                version="2.12"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="gtk-cursor-theme-name" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="gtk-cursor-theme-size" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="gtk-dnd-drag-threshold" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="gtk-double-click-distance" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="gtk-double-click-time" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="gtk-enable-accels"
+                version="2.12"
+                writable="1"
+                doc="Whether menu items should have visible accelerators which can be
+activated.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gtk-enable-animations" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gtk-enable-event-sounds"
+                version="2.14"
+                writable="1"
+                doc="Whether to play any event sounds at all.
+See the &lt;ulink url=&quot;http://www.freedesktop.org/wiki/Specifications/sound-theme-spec&quot;&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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gtk-enable-input-feedback-sounds"
+                version="2.14"
+                writable="1"
+                doc="Whether to play event sounds as feedback to user input.
+See the &lt;ulink url=&quot;http://www.freedesktop.org/wiki/Specifications/sound-theme-spec&quot;&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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gtk-enable-mnemonics"
+                version="2.12"
+                writable="1"
+                doc="Whether labels and menu items should have visible mnemonics which
+can be activated.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gtk-enable-tooltips"
+                version="2.14"
+                writable="1"
+                doc="Whether tooltips should be shown on widgets.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gtk-error-bell"
+                version="2.12"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gtk-fallback-icon-theme" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="gtk-file-chooser-backend" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="gtk-font-name" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="gtk-fontconfig-timestamp" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="gtk-icon-sizes"
+                writable="1"
+                doc="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. &quot;gtk-menu=16,16:gtk-button=20,20:gtk-dialog=48,48&quot;.
+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().">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="gtk-icon-theme-name" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="gtk-im-module"
+                writable="1"
+                doc="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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="gtk-key-theme-name" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="gtk-keynav-cursor-only"
+                version="2.12"
+                writable="1"
+                doc="When %TRUE, keyboard navigation should be able to reach all widgets
+by using the cursor keys only. Tab, Shift etc. keys can&apos;t be expected
+to be present on the used input device.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gtk-keynav-wrap-around"
+                version="2.12"
+                writable="1"
+                doc="When %TRUE, some widgets will wrap around when doing keyboard
+navigation, such as menus, menubars and notebooks.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gtk-menu-bar-accel" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="gtk-modules" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="gtk-print-backends"
+                version="2.10"
+                writable="1"
+                doc="A comma-separated list of print backends to use in the print
+dialog. Available print backends depend on the GTK+ installation,
+and may include &quot;file&quot;, &quot;cups&quot;, &quot;lpr&quot; or &quot;papi&quot;.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="gtk-print-preview-command"
+                version="2.10"
+                writable="1"
+                doc="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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="gtk-recent-files-limit"
+                version="2.12"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="gtk-recent-files-max-age"
+                version="2.14"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="gtk-show-input-method-menu" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gtk-show-unicode-menu" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gtk-sound-theme-name"
+                version="2.14"
+                writable="1"
+                doc="The XDG sound theme to use for event sounds.
+See the &lt;ulink url=&quot;http://www.freedesktop.org/wiki/Specifications/sound-theme-spec&quot;&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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="gtk-split-cursor" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gtk-theme-name" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="gtk-timeout-expand" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="gtk-timeout-initial" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="gtk-timeout-repeat" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="gtk-toolbar-icon-size" writable="1">
+        <type name="IconSize" c:type="GtkIconSize"/>
+      </property>
+      <property name="gtk-toolbar-style" writable="1">
+        <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+      </property>
+      <property name="gtk-tooltip-browse-mode-timeout"
+                version="2.12"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="gtk-tooltip-browse-timeout"
+                version="2.12"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="gtk-tooltip-timeout"
+                version="2.12"
+                writable="1"
+                doc="Time, in milliseconds, after which a tooltip could appear if the
+cursor is hovering on top of a widget.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="gtk-touchscreen-mode"
+                version="2.10"
+                writable="1"
+                doc="When %TRUE, there are no motion notify events delivered on this screen,
+and widgets can&apos;t use the pointer hovering them for any essential
+functionality.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gtk-xft-antialias" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="gtk-xft-dpi" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="gtk-xft-hinting" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="gtk-xft-hintstyle" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="gtk-xft-rgba" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </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">
+    </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>
+    <enumeration name="SideType"
+                 glib:type-name="GtkSideType"
+                 glib:get-type="gtk_side_type_get_type"
+                 c:type="GtkSideType">
+      <member name="top"
+              value="0"
+              c:identifier="GTK_SIDE_TOP"
+              glib:nick="top"/>
+      <member name="bottom"
+              value="1"
+              c:identifier="GTK_SIDE_BOTTOM"
+              glib:nick="bottom"/>
+      <member name="left"
+              value="2"
+              c:identifier="GTK_SIDE_LEFT"
+              glib:nick="left"/>
+      <member name="right"
+              value="3"
+              c:identifier="GTK_SIDE_RIGHT"
+              glib:nick="right"/>
+    </enumeration>
+    <callback name="SignalFunc" c:type="GtkSignalFunc">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </callback>
+    <bitfield name="SignalRunType"
+              glib:type-name="GtkSignalRunType"
+              glib:get-type="gtk_signal_run_type_get_type"
+              c:type="GtkSignalRunType">
+      <member name="first"
+              value="1"
+              c:identifier="GTK_RUN_FIRST"
+              glib:nick="first"/>
+      <member name="last"
+              value="2"
+              c:identifier="GTK_RUN_LAST"
+              glib:nick="last"/>
+      <member name="both"
+              value="3"
+              c:identifier="GTK_RUN_BOTH"
+              glib:nick="both"/>
+      <member name="no_recurse"
+              value="8"
+              c:identifier="GTK_RUN_NO_RECURSE"
+              glib:nick="no-recurse"/>
+      <member name="action"
+              value="32"
+              c:identifier="GTK_RUN_ACTION"
+              glib:nick="action"/>
+      <member name="no_hooks"
+              value="64"
+              c:identifier="GTK_RUN_NO_HOOKS"
+              glib:nick="no-hooks"/>
+    </bitfield>
+    <class name="SizeGroup"
+           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="Create a new #GtkSizeGroup.">
+        <return-value transfer-ownership="full">
+          <type name="SizeGroup" c:type="GtkSizeGroup*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="SizeGroupMode" c:type="GtkSizeGroupMode"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_mode"
+              c:identifier="gtk_size_group_set_mode"
+              doc="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).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="SizeGroupMode" c:type="GtkSizeGroupMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mode"
+              c:identifier="gtk_size_group_get_mode"
+              doc="Gets the current mode of the size group. See gtk_size_group_set_mode().">
+        <return-value transfer-ownership="full">
+          <type name="SizeGroupMode" c:type="GtkSizeGroupMode"/>
+        </return-value>
+      </method>
+      <method name="set_ignore_hidden"
+              c:identifier="gtk_size_group_set_ignore_hidden"
+              doc="when calculating the size
+Sets whether unmapped widgets should be ignored when
+calculating the size."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ignore_hidden" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ignore_hidden"
+              c:identifier="gtk_size_group_get_ignore_hidden"
+              doc="Returns if invisible widgets are ignored when calculating the size."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="add_widget"
+              c:identifier="gtk_size_group_add_widget"
+              doc="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.">
+        <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>
+      </method>
+      <method name="remove_widget"
+              c:identifier="gtk_size_group_remove_widget"
+              doc="Removes a widget from a #GtkSizeGroup.">
+        <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>
+      </method>
+      <method name="get_widgets"
+              c:identifier="gtk_size_group_get_widgets"
+              doc="Returns the list of widgets associated with @size_group.
+widgets. The list is owned by GTK+ and should not be modified."
+              version="2.10">
+        <return-value transfer-ownership="none" doc="a #GSList of">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Widget"/>
+          </type>
+        </return-value>
+      </method>
+      <property name="ignore-hidden"
+                version="2.8"
+                writable="1"
+                doc="If %TRUE, unmapped widgets are ignored when determining
+the size of the group.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="mode" writable="1">
+        <type name="SizeGroupMode" c:type="GtkSizeGroupMode"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="widgets">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="mode">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="have_width" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="have_height" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="ignore_hidden" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="requisition">
+        <type name="Requisition" c:type="GtkRequisition"/>
+      </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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="SizeGroupMode"
+                 doc="The mode of the size group determines the directions in which the size
+group affects the requested sizes of its component widgets."
+                 glib:type-name="GtkSizeGroupMode"
+                 glib:get-type="gtk_size_group_mode_get_type"
+                 c:type="GtkSizeGroupMode">
+      <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>
+    <class name="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"/>
+      <constructor name="new"
+                   c:identifier="gtk_socket_new"
+                   doc="Create a new empty #GtkSocket.">
+        <return-value transfer-ownership="full">
+          <type name="Socket" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="add_id"
+              c:identifier="gtk_socket_add_id"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="window_id" transfer-ownership="none">
+            <type name="Gdk.NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_id"
+              c:identifier="gtk_socket_get_id"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.NativeWindow" c:type="GdkNativeWindow"/>
+        </return-value>
+      </method>
+      <method name="get_plug_window"
+              c:identifier="gtk_socket_get_plug_window"
+              doc="Retrieves the window of the plug. Use this to check if the plug has
+been created inside of the socket."
+              version=" 2.14">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="steal"
+              c:identifier="gtk_socket_steal"
+              doc="Reparents a pre-existing toplevel window into a #GtkSocket. This is
+meant to embed clients that do not know about embedding into a
+#GtkSocket, however doing so is inherently unreliable, and using
+this function is not recommended.
+The #GtkSocket must have already be added into a toplevel window
+before you can make this call.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wid" transfer-ownership="none">
+            <type name="Gdk.NativeWindow" c:type="GdkNativeWindow"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="request_width">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="request_height">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="current_width">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="current_height">
+        <type name="uint16" 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="short" c:type="gshort"/>
+      </field>
+      <field name="same_app" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="focus_in" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="have_size" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="need_map" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_mapped" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="active" bits="1">
+        <type name="uint" 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="This signal is emitted when a client is successfully
+added to the socket.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="plug-removed"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="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" c:type="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" c:type="plug_removed">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_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: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"/>
+      <constructor name="new" c:identifier="gtk_spin_button_new">
+        <return-value transfer-ownership="full">
+          <type name="SpinButton" 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="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="digits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_range"
+                   c:identifier="gtk_spin_button_new_with_range"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="SpinButton" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="min" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="max" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="step" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="configure"
+              c:identifier="gtk_spin_button_configure"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkAdjustment.">
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="climb_rate" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="digits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_adjustment"
+              c:identifier="gtk_spin_button_set_adjustment"
+              doc="Replaces the #GtkAdjustment associated with @spin_button.">
+        <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>
+      </method>
+      <method name="get_adjustment"
+              c:identifier="gtk_spin_button_get_adjustment"
+              doc="Get the adjustment associated with a #GtkSpinButton">
+        <return-value transfer-ownership="full">
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="set_digits"
+              c:identifier="gtk_spin_button_set_digits"
+              doc="Set the precision to be displayed by @spin_button. Up to 20 digit precision
+is allowed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="digits" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_digits"
+              c:identifier="gtk_spin_button_get_digits"
+              doc="Fetches the precision of @spin_button. See gtk_spin_button_set_digits().">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="set_increments"
+              c:identifier="gtk_spin_button_set_increments"
+              doc="Sets the step and page increments for spin_button.  This affects how
+quickly the value changes when the spin button&apos;s arrows are activated.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="step" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="page" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_increments"
+              c:identifier="gtk_spin_button_get_increments"
+              doc="Gets the current step and page the increments used by @spin_button. See
+gtk_spin_button_set_increments().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="step"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store step increment, or %NULL">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="page"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store page increment, or %NULL">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_range"
+              c:identifier="gtk_spin_button_set_range"
+              doc="Sets the minimum and maximum allowable values for @spin_button">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="max" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_range"
+              c:identifier="gtk_spin_button_get_range"
+              doc="Gets the range allowed for @spin_button. See
+gtk_spin_button_set_range().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store minimum allowed value, or %NULL">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+          <parameter name="max"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store maximum allowed value, or %NULL">
+            <type name="double" c:type="gdouble*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value"
+              c:identifier="gtk_spin_button_get_value"
+              doc="Get the value in the @spin_button.">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="get_value_as_int"
+              c:identifier="gtk_spin_button_get_value_as_int"
+              doc="Get the value @spin_button represented as an integer.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_value"
+              c:identifier="gtk_spin_button_set_value"
+              doc="Set the value of @spin_button.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="value" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_update_policy"
+              c:identifier="gtk_spin_button_set_update_policy"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="policy" transfer-ownership="none">
+            <type name="SpinButtonUpdatePolicy"
+                  c:type="GtkSpinButtonUpdatePolicy"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_update_policy"
+              c:identifier="gtk_spin_button_get_update_policy"
+              doc="Gets the update behavior of a spin button. See
+gtk_spin_button_set_update_policy().">
+        <return-value transfer-ownership="full">
+          <type name="SpinButtonUpdatePolicy"
+                c:type="GtkSpinButtonUpdatePolicy"/>
+        </return-value>
+      </method>
+      <method name="set_numeric"
+              c:identifier="gtk_spin_button_set_numeric"
+              doc="Sets the flag that determines if non-numeric text can be typed into
+the spin button.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="numeric" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_numeric"
+              c:identifier="gtk_spin_button_get_numeric"
+              doc="Returns whether non-numeric text can be typed into the spin button.
+See gtk_spin_button_set_numeric().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="spin"
+              c:identifier="gtk_spin_button_spin"
+              doc="Increment or decrement a spin button&apos;s value in a specified direction
+by a specified amount.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="SpinType" c:type="GtkSpinType"/>
+          </parameter>
+          <parameter name="increment" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_wrap"
+              c:identifier="gtk_spin_button_set_wrap"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrap" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_wrap"
+              c:identifier="gtk_spin_button_get_wrap"
+              doc="Returns whether the spin button&apos;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().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_snap_to_ticks"
+              c:identifier="gtk_spin_button_set_snap_to_ticks"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="snap_to_ticks" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_snap_to_ticks"
+              c:identifier="gtk_spin_button_get_snap_to_ticks"
+              doc="Returns whether the values are corrected to the nearest step. See
+gtk_spin_button_set_snap_to_ticks().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="update"
+              c:identifier="gtk_spin_button_update"
+              doc="Manually force an update of the spin button.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="adjustment" writable="1">
+        <type name="Adjustment" c:type="GtkAdjustment"/>
+      </property>
+      <property name="climb-rate" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="digits" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="numeric" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="snap-to-ticks" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="update-policy" writable="1">
+        <type name="SpinButtonUpdatePolicy"
+              c:type="GtkSpinButtonUpdatePolicy"/>
+      </property>
+      <property name="value" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="wrap" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="entry">
+        <type name="Entry" c:type="GtkEntry"/>
+      </field>
+      <field name="adjustment">
+        <type name="Adjustment" c:type="GtkAdjustment*"/>
+      </field>
+      <field name="panel">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="timer">
+        <type name="uint32" c:type="guint32"/>
+      </field>
+      <field name="climb_rate">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="timer_step">
+        <type name="double" c:type="gdouble"/>
+      </field>
+      <field name="update_policy">
+        <type name="SpinButtonUpdatePolicy"
+              c:type="GtkSpinButtonUpdatePolicy"/>
+      </field>
+      <field name="in_child" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="click_child" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="button" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="need_timer" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="timer_calls" bits="3">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="digits" bits="10">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="numeric" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="wrap" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="snap_to_ticks" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="change-value">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="ScrollType" c:type="GtkScrollType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="input">
+        <return-value transfer-ownership="full">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="output"
+                   doc="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 (&quot;%02d&quot;, value);
+gtk_entry_set_text (GTK_ENTRY (spin), text);
+g_free (text);
+return TRUE;
+}
+]|">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="value-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="wrapped"
+                   doc="The wrapped signal is emitted right after the spinbutton wraps
+from its maximum to minimum value or vice-versa."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="input">
+          <return-value transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="spin_button" transfer-ownership="none">
+              <type name="SpinButton" c:type="GtkSpinButton*"/>
+            </parameter>
+            <parameter name="new_value"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="double" c:type="gdouble*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="output">
+        <callback name="output" c:type="output">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="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" c:type="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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </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:type="GtkSpinner"
+           parent="DrawingArea"
+           glib:type-name="GtkSpinner"
+           glib:get-type="gtk_spinner_get_type"
+           glib:type-struct="SpinnerClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_spinner_new"
+                   doc="Returns a new spinner widget. Not yet started."
+                   version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="Spinner" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="start"
+              c:identifier="gtk_spinner_start"
+              doc="Starts the animation of the spinner."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop"
+              c:identifier="gtk_spinner_stop"
+              doc="Stops the animation of the spinner."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="active" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent">
+        <type name="DrawingArea" c:type="GtkDrawingArea"/>
+      </field>
+      <field name="priv">
+        <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="DrawingAreaClass" c:type="GtkDrawingAreaClass"/>
+      </field>
+    </record>
+    <record name="SpinnerPrivate" c:type="GtkSpinnerPrivate">
+    </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: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"
+                   doc="Creates an empty status icon object."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_pixbuf"
+                   c:identifier="gtk_status_icon_new_from_pixbuf"
+                   doc="Creates a status icon displaying @pixbuf.
+The image will be scaled down to fit in the available
+space in the notification area, if necessary."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf" transfer-ownership="none">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_file"
+                   c:identifier="gtk_status_icon_new_from_file"
+                   doc="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."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_stock"
+                   c:identifier="gtk_status_icon_new_from_stock"
+                   doc="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()."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_icon_name"
+                   c:identifier="gtk_status_icon_new_from_icon_name"
+                   doc="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."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_gicon"
+                   c:identifier="gtk_status_icon_new_from_gicon"
+                   doc="Creates a status icon displaying a #GIcon. If the icon is a
+themed icon, it will be updated when the theme changes."
+                   version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="StatusIcon" c:type="GtkStatusIcon*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <type name="Gio.Icon" c:type="GIcon*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="position_menu"
+                c:identifier="gtk_status_icon_position_menu"
+                doc="aligned with the menu popup position (only useful for GtkOptionMenu).
+Menu positioning function to use with gtk_menu_popup()
+to position @menu aligned to the status icon @user_data."
+                version="2.10">
+        <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" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="push_in"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="to be">
+            <type name="boolean" c:type="gboolean*"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="set_from_pixbuf"
+              c:identifier="gtk_status_icon_set_from_pixbuf"
+              doc="Makes @status_icon display @pixbuf.
+See gtk_status_icon_new_from_pixbuf() for details."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkPixbuf or %NULL">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_file"
+              c:identifier="gtk_status_icon_set_from_file"
+              doc="Makes @status_icon display the file @filename.
+See gtk_status_icon_new_from_file() for details."
+              version="2.10">
+        <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>
+      </method>
+      <method name="set_from_stock"
+              c:identifier="gtk_status_icon_set_from_stock"
+              doc="Makes @status_icon display the stock icon with the id @stock_id.
+See gtk_status_icon_new_from_stock() for details."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_from_icon_name"
+              c:identifier="gtk_status_icon_set_from_icon_name"
+              doc="Makes @status_icon display the icon named @icon_name from the
+current icon theme.
+See gtk_status_icon_new_from_icon_name() for details."
+              version="2.10">
+        <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_from_gicon"
+              c:identifier="gtk_status_icon_set_from_gicon"
+              doc="Makes @status_icon display the #GIcon.
+See gtk_status_icon_new_from_gicon() for details."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <type name="Gio.Icon" c:type="GIcon*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_storage_type"
+              c:identifier="gtk_status_icon_get_storage_type"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="ImageType" c:type="GtkImageType"/>
+        </return-value>
+      </method>
+      <method name="get_pixbuf"
+              c:identifier="gtk_status_icon_get_pixbuf"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="get_stock"
+              c:identifier="gtk_status_icon_get_stock"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_icon_name"
+              c:identifier="gtk_status_icon_get_icon_name"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_gicon"
+              c:identifier="gtk_status_icon_get_gicon"
+              doc="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;"
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Gio.Icon" c:type="GIcon*"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="gtk_status_icon_get_size"
+              doc="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())."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_screen"
+              c:identifier="gtk_status_icon_set_screen"
+              doc="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."
+              version="2.12">
+        <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="get_screen" c:identifier="gtk_status_icon_get_screen">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="set_tooltip"
+              c:identifier="gtk_status_icon_set_tooltip"
+              doc="Sets the tooltip of the status icon."
+              version="2.10"
+              deprecated="Use gtk_status_icon_set_tooltip_text() instead."
+              deprecated-version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tooltip_text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the tooltip text, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_has_tooltip"
+              c:identifier="gtk_status_icon_set_has_tooltip"
+              doc="Sets the has-tooltip property on @status_icon to @has_tooltip.
+See #GtkStatusIcon:has-tooltip for more information."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="has_tooltip" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_text"
+              c:identifier="gtk_status_icon_set_tooltip_text"
+              doc="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()."
+              version="2.16">
+        <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>
+        </parameters>
+      </method>
+      <method name="set_tooltip_markup"
+              c:identifier="gtk_status_icon_set_tooltip_markup"
+              doc="Sets @markup as the contents of the tooltip, which is marked up with
+the &lt;link linkend=&quot;PangoMarkupFormat&quot;&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()."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the contents of the tooltip for @status_icon, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_title"
+              c:identifier="gtk_status_icon_set_title"
+              doc="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."
+              version="2.18">
+        <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="get_title"
+              c:identifier="gtk_status_icon_get_title"
+              doc="Gets the title of this tray icon. See gtk_status_icon_set_title()."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_name"
+              c:identifier="gtk_status_icon_set_name"
+              doc="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."
+              version="2.20">
+        <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="set_visible"
+              c:identifier="gtk_status_icon_set_visible"
+              doc="Shows or hides a status icon."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible"
+              c:identifier="gtk_status_icon_get_visible"
+              doc="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()."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_blinking"
+              c:identifier="gtk_status_icon_set_blinking"
+              doc="Makes the status icon start or stop blinking.
+Note that blinking user interface elements may be problematic
+for some users, and thus may be turned off, in which case
+this setting has no effect."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="blinking" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_blinking"
+              c:identifier="gtk_status_icon_get_blinking"
+              doc="Returns whether the icon is blinking, see
+gtk_status_icon_set_blinking()."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_embedded"
+              c:identifier="gtk_status_icon_is_embedded"
+              doc="Returns whether the status icon is embedded in a notification
+area.
+a notification area."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_geometry"
+              c:identifier="gtk_status_icon_get_geometry"
+              doc="information is not needed
+icon, or %NULL
+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.
+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"
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="screen"
+                     direction="out"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="return location for the screen, or %NULL if the">
+            <type name="Gdk.Screen" c:type="GdkScreen**"/>
+          </parameter>
+          <parameter name="area"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the area occupied by the status">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="orientation"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the orientation of the panel">
+            <type name="Orientation" c:type="GtkOrientation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_has_tooltip"
+              c:identifier="gtk_status_icon_get_has_tooltip"
+              doc="Returns the current value of the has-tooltip property.
+See #GtkStatusIcon:has-tooltip for more information."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_tooltip_text"
+              c:identifier="gtk_status_icon_get_tooltip_text"
+              doc="Gets the contents of the tooltip for @status_icon.
+returned string with g_free() when done."
+              version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_tooltip_markup"
+              c:identifier="gtk_status_icon_get_tooltip_markup"
+              doc="Gets the contents of the tooltip for @status_icon.
+returned string with g_free() when done."
+              version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_x11_window_id"
+              c:identifier="gtk_status_icon_get_x11_window_id"
+              doc="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"
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </return-value>
+      </method>
+      <property name="blinking" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="embedded"
+                version="2.12"
+                doc="%TRUE if the statusicon is embedded in a notification area.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="file" readable="0" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="gicon"
+                version="2.14"
+                writable="1"
+                doc="The #GIcon displayed in the #GtkStatusIcon. For themed icons,
+the image will be updated automatically if the theme changes.">
+        <type name="Gio.Icon" c:type="GIcon"/>
+      </property>
+      <property name="has-tooltip"
+                version="2.16"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="icon-name" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="orientation"
+                version="2.12"
+                doc="The orientation of the tray in which the statusicon
+is embedded.">
+        <type name="Orientation" c:type="GtkOrientation"/>
+      </property>
+      <property name="pixbuf" writable="1">
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf"/>
+      </property>
+      <property name="screen" writable="1">
+        <type name="Gdk.Screen" c:type="GdkScreen"/>
+      </property>
+      <property name="size">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="stock" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="storage-type">
+        <type name="ImageType" c:type="GtkImageType"/>
+      </property>
+      <property name="title"
+                version="2.18"
+                writable="1"
+                doc="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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="tooltip-markup"
+                version="2.16"
+                writable="1"
+                doc="Sets the text of tooltip to be the given string, which is marked up
+with the &lt;link linkend=&quot;PangoMarkupFormat&quot;&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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="tooltip-text"
+                version="2.16"
+                writable="1"
+                doc="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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="visible" writable="1">
+        <type name="boolean" c:type="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"
+                   doc="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."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="button-press-event"
+                   doc="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."
+                   version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="button-release-event"
+                   doc="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."
+                   version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="popup-menu"
+                   doc="signal is not emitted in response to a button press event
+triggered the signal emission
+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."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="button" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="activate_time" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="query-tooltip"
+                   doc="emitted, relative to @status_icon
+emitted, relative to @status_icon
+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."
+                   version="2.16">
+        <return-value transfer-ownership="full">
+          <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="keyboard_mode" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="tooltip" transfer-ownership="none">
+            <type name="Tooltip" c:type="GtkTooltip"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="scroll-event"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="size-changed"
+                   doc="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."
+                   version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="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" c:type="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" c:type="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="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="activate_time" transfer-ownership="none">
+              <type name="uint32" c:type="guint32"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="size_changed">
+        <callback name="size_changed" c:type="size_changed">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="button_press_event">
+        <callback name="button_press_event" c:type="button_press_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="button_release_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="scroll_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="query_tooltip">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="keyboard_mode" transfer-ownership="none">
+              <type name="boolean" 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="any" c:type="void*"/>
+      </field>
+      <field name="__gtk_reserved2">
+        <type name="any" c:type="void*"/>
+      </field>
+    </record>
+    <record name="StatusIconPrivate" c:type="GtkStatusIconPrivate">
+    </record>
+    <class name="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"/>
+      <constructor name="new"
+                   c:identifier="gtk_statusbar_new"
+                   doc="Creates a new #GtkStatusbar ready for messages.">
+        <return-value transfer-ownership="full">
+          <type name="Statusbar" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="get_context_id"
+              c:identifier="gtk_statusbar_get_context_id"
+              doc="the new message is being used in
+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.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="context_description" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="push"
+              c:identifier="gtk_statusbar_push"
+              doc="gtk_statusbar_get_context_id()
+Pushes a new message onto a statusbar&apos;s stack.
+gtk_statusbar_remove().">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="context_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pop"
+              c:identifier="gtk_statusbar_pop"
+              doc="Removes the first message in the #GtkStatusBar&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="context_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="gtk_statusbar_remove"
+              doc="Forces the removal of a message from a statusbar&apos;s stack.
+The exact @context_id and @message_id must be specified.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="context_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="message_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_has_resize_grip"
+              c:identifier="gtk_statusbar_set_has_resize_grip"
+              doc="Sets whether the statusbar has a resize grip.
+%TRUE by default.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_has_resize_grip"
+              c:identifier="gtk_statusbar_get_has_resize_grip"
+              doc="Returns whether the statusbar has a resize grip.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_message_area"
+              c:identifier="gtk_statusbar_get_message_area"
+              doc="Retrieves the box containing the label widget."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <property name="has-resize-grip"
+                version="2.4"
+                writable="1"
+                doc="Whether the statusbar has a grip for resizing the toplevel window.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="parent_widget">
+        <type name="HBox" c:type="GtkHBox"/>
+      </field>
+      <field name="frame">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="label">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="messages">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="keys">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="seq_context_id">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="seq_message_id">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="grip_window">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="has_resize_grip" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="text-popped"
+                   doc="Is emitted whenever a new message is popped off a statusbar&apos;s stack.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="context_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="text-pushed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </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="any" c:type="gpointer"/>
+      </field>
+      <field name="text_pushed">
+        <callback name="text_pushed" c:type="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="uint" 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" c:type="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="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="text" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </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="uint" 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"
+              doc="Copies a stock item, mostly useful for language bindings and not in applications.">
+        <return-value transfer-ownership="full">
+          <type name="StockItem" c:type="GtkStockItem*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gtk_stock_item_free"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="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="Creates a new #GtkStyle.">
+        <return-value transfer-ownership="full">
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+      </constructor>
+      <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="clone">
+        <return-value transfer-ownership="full">
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+      </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="set_background" invoker="set_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="state_type" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="render_icon" invoker="render_icon">
+        <return-value transfer-ownership="full">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <type name="IconSource" c:type="GtkIconSource*"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="TextDirection" c:type="GtkTextDirection"/>
+          </parameter>
+          <parameter name="state" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="IconSize" c:type="GtkIconSize"/>
+          </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>
+        </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="int" c:type="gint"/>
+          </parameter>
+          <parameter name="x2" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" 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="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y2_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" 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="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>
+      <virtual-method name="draw_polygon">
+        <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="point" transfer-ownership="none">
+            <type name="Gdk.Point" c:type="GdkPoint*"/>
+          </parameter>
+          <parameter name="npoints" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="fill" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </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="boolean" c:type="gboolean"/>
+          </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>
+      </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="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>
+      <virtual-method name="draw_string">
+        <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="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </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="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>
+      <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="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>
+      <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="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>
+      <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="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>
+      <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="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>
+      <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="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>
+          <parameter name="gap_side" transfer-ownership="none">
+            <type name="PositionType" c:type="GtkPositionType"/>
+          </parameter>
+          <parameter name="gap_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="gap_width" transfer-ownership="none">
+            <type name="int" 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="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>
+          <parameter name="gap_side" transfer-ownership="none">
+            <type name="PositionType" c:type="GtkPositionType"/>
+          </parameter>
+          <parameter name="gap_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="gap_width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </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="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>
+          <parameter name="gap_side" transfer-ownership="none">
+            <type name="PositionType" c:type="GtkPositionType"/>
+          </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="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>
+      <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="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>
+          <parameter name="orientation" transfer-ownership="none">
+            <type name="Orientation" c:type="GtkOrientation"/>
+          </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="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>
+          <parameter name="orientation" transfer-ownership="none">
+            <type name="Orientation" c:type="GtkOrientation"/>
+          </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="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" 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_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="boolean" 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="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" 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_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="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>
+      <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="uint" c:type="guint"/>
+          </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>
+      </virtual-method>
+      <method name="copy"
+              c:identifier="gtk_style_copy"
+              doc="Creates a copy of the passed in #GtkStyle object.">
+        <return-value transfer-ownership="full">
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+      </method>
+      <method name="attach"
+              c:identifier="gtk_style_attach"
+              doc="Attaches a style to a window; this process allocates the
+colors and creates the GC&apos;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&apos;ed, and the new style will have
+a reference count belonging to the caller.">
+        <return-value transfer-ownership="full">
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="detach"
+              c:identifier="gtk_style_detach"
+              doc="Detaches a style from a window. If the style is not attached
+to any windows anymore, it is unrealized. See gtk_style_attach().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="ref"
+              c:identifier="gtk_style_ref"
+              doc="Increase the reference count of @style."
+              deprecated="use g_object_ref() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="full">
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gtk_style_unref"
+              doc="Decrease the reference count of @style."
+              deprecated="use g_object_unref() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_font"
+              c:identifier="gtk_style_get_font"
+              doc="Gets the #GdkFont to use for the given style. This is
+meant only as a replacement for direct access to @style-&gt;font
+and should not be used in new code. New code should
+use @style-&gt;font_desc instead.
+by the style; if you want to keep around a copy, you must
+call gdk_font_ref().">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Font" c:type="GdkFont*"/>
+        </return-value>
+      </method>
+      <method name="set_font"
+              c:identifier="gtk_style_set_font"
+              doc="to style-&gt;font_desc.
+Sets the #GdkFont to use for a given style. This is
+meant only as a replacement for direct access to style-&gt;font
+and should not be used in new code. New code should
+use style-&gt;font_desc instead.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkFont, or %NULL to use the #GdkFont corresponding">
+            <type name="Gdk.Font" c:type="GdkFont*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_background"
+              c:identifier="gtk_style_set_background"
+              doc="Sets the background of @window to the background color or pixmap
+specified by @style for the given state.">
+        <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>
+        </parameters>
+      </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="boolean" 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="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="lookup_icon_set"
+              c:identifier="gtk_style_lookup_icon_set"
+              doc="Looks up @stock_id in the icon factories associated with @style
+and the default icon factory, returning an icon set if found,
+otherwise %NULL.">
+        <return-value transfer-ownership="full">
+          <type name="IconSet" c:type="GtkIconSet*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="lookup_color"
+              c:identifier="gtk_style_lookup_color"
+              doc="Looks up @color_name in the style&apos;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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="color_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="render_icon"
+              c:identifier="gtk_style_render_icon"
+              doc="(GtkIconSize)-1 means render at the size of the source and
+don&apos;t scale.
+Renders the icon specified by @source at the given @size
+according to the given parameters and returns the result in a
+pixbuf.">
+        <return-value transfer-ownership="full">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="source" transfer-ownership="none">
+            <type name="IconSource" c:type="GtkIconSource*"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="TextDirection" c:type="GtkTextDirection"/>
+          </parameter>
+          <parameter name="state" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="size"
+                     transfer-ownership="none"
+                     doc="the size to render the icon at. A size of">
+            <type name="int" c:type="GtkIconSize"/>
+          </parameter>
+          <parameter name="widget"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the widget">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="detail"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a style detail">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_style_property"
+              c:identifier="gtk_style_get_style_property"
+              doc="queried will be stored
+Queries the value of a style property corresponding to a
+widget class is in the given style."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+          <parameter name="property_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>
+      </method>
+      <method name="get"
+              c:identifier="gtk_style_get"
+              doc="return the property values, starting with the location for
+Gets the values of a multiple style properties for @widget_type
+from @style."
+              version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </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>
+      </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"/>
+        </array>
+      </field>
+      <field name="bg">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color"/>
+        </array>
+      </field>
+      <field name="light">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color"/>
+        </array>
+      </field>
+      <field name="dark">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color"/>
+        </array>
+      </field>
+      <field name="mid">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color"/>
+        </array>
+      </field>
+      <field name="text">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color"/>
+        </array>
+      </field>
+      <field name="base">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color"/>
+        </array>
+      </field>
+      <field name="text_aa">
+        <array zero-terminated="0" c:type="GdkColor" fixed-size="5">
+          <type name="Gdk.Color"/>
+        </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="int" c:type="gint"/>
+      </field>
+      <field name="ythickness">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="fg_gc">
+        <array zero-terminated="0" c:type="GdkGC*" fixed-size="5">
+          <type name="Gdk.GC"/>
+        </array>
+      </field>
+      <field name="bg_gc">
+        <array zero-terminated="0" c:type="GdkGC*" fixed-size="5">
+          <type name="Gdk.GC"/>
+        </array>
+      </field>
+      <field name="light_gc">
+        <array zero-terminated="0" c:type="GdkGC*" fixed-size="5">
+          <type name="Gdk.GC"/>
+        </array>
+      </field>
+      <field name="dark_gc">
+        <array zero-terminated="0" c:type="GdkGC*" fixed-size="5">
+          <type name="Gdk.GC"/>
+        </array>
+      </field>
+      <field name="mid_gc">
+        <array zero-terminated="0" c:type="GdkGC*" fixed-size="5">
+          <type name="Gdk.GC"/>
+        </array>
+      </field>
+      <field name="text_gc">
+        <array zero-terminated="0" c:type="GdkGC*" fixed-size="5">
+          <type name="Gdk.GC"/>
+        </array>
+      </field>
+      <field name="base_gc">
+        <array zero-terminated="0" c:type="GdkGC*" fixed-size="5">
+          <type name="Gdk.GC"/>
+        </array>
+      </field>
+      <field name="text_aa_gc">
+        <array zero-terminated="0" c:type="GdkGC*" fixed-size="5">
+          <type name="Gdk.GC"/>
+        </array>
+      </field>
+      <field name="black_gc">
+        <type name="Gdk.GC" c:type="GdkGC*"/>
+      </field>
+      <field name="white_gc">
+        <type name="Gdk.GC" c:type="GdkGC*"/>
+      </field>
+      <field name="bg_pixmap">
+        <array zero-terminated="0" c:type="GdkPixmap*" fixed-size="5">
+          <type name="Gdk.Pixmap"/>
+        </array>
+      </field>
+      <field name="attach_count">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="depth">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="colormap">
+        <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+      </field>
+      <field name="private_font">
+        <type name="Gdk.Font" c:type="GdkFont*"/>
+      </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*"/>
+      </field>
+      <field name="property_cache">
+        <type name="GLib.Array" c:type="GArray*"/>
+      </field>
+      <field name="icon_factories">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <glib:signal name="realize"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unrealize"
+                   doc="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 like a #GdkGC as object data on #GtkStyle.
+This signal provides a convenient place to free such cached objects."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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" c:type="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" c:type="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">
+        <callback name="clone" c:type="clone">
+          <return-value transfer-ownership="full">
+            <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" c:type="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" c:type="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">
+              <type name="Gdk.Window" c:type="GdkWindow*"/>
+            </parameter>
+            <parameter name="state_type" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="render_icon">
+        <callback name="render_icon" c:type="render_icon">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="IconSource" c:type="GtkIconSource*"/>
+            </parameter>
+            <parameter name="direction" transfer-ownership="none">
+              <type name="TextDirection" c:type="GtkTextDirection"/>
+            </parameter>
+            <parameter name="state" transfer-ownership="none">
+              <type name="StateType" c:type="GtkStateType"/>
+            </parameter>
+            <parameter name="size" transfer-ownership="none">
+              <type name="IconSize" c:type="GtkIconSize"/>
+            </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>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_hline">
+        <callback name="draw_hline" c:type="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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="x2" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_vline">
+        <callback name="draw_vline" c:type="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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y2_" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_shadow">
+        <callback name="draw_shadow" c:type="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="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="draw_polygon">
+        <callback name="draw_polygon" c:type="draw_polygon">
+          <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="point" transfer-ownership="none">
+              <type name="Gdk.Point" c:type="GdkPoint*"/>
+            </parameter>
+            <parameter name="npoints" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="fill" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_arrow">
+        <callback name="draw_arrow" c:type="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="boolean" c:type="gboolean"/>
+            </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="draw_diamond">
+        <callback name="draw_diamond" c:type="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="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="draw_string">
+        <callback name="draw_string" c:type="draw_string">
+          <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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="string" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_box">
+        <callback name="draw_box" c:type="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="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="draw_flat_box">
+        <callback name="draw_flat_box" c:type="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="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="draw_check">
+        <callback name="draw_check" c:type="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="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="draw_option">
+        <callback name="draw_option" c:type="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="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="draw_tab">
+        <callback name="draw_tab" c:type="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="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="draw_shadow_gap">
+        <callback name="draw_shadow_gap" c:type="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="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>
+            <parameter name="gap_side" transfer-ownership="none">
+              <type name="PositionType" c:type="GtkPositionType"/>
+            </parameter>
+            <parameter name="gap_x" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="gap_width" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_box_gap">
+        <callback name="draw_box_gap" c:type="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="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>
+            <parameter name="gap_side" transfer-ownership="none">
+              <type name="PositionType" c:type="GtkPositionType"/>
+            </parameter>
+            <parameter name="gap_x" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="gap_width" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_extension">
+        <callback name="draw_extension" c:type="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="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>
+            <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" c:type="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="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="draw_slider">
+        <callback name="draw_slider" c:type="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="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>
+            <parameter name="orientation" transfer-ownership="none">
+              <type name="Orientation" c:type="GtkOrientation"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_handle">
+        <callback name="draw_handle" c:type="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="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>
+            <parameter name="orientation" transfer-ownership="none">
+              <type name="Orientation" c:type="GtkOrientation"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_expander">
+        <callback name="draw_expander" c:type="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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" 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" c:type="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="boolean" 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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" 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" c:type="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="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="draw_spinner">
+        <callback name="draw_spinner" c:type="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="uint" c:type="guint"/>
+            </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="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved5">
+        <callback name="gtk_reserved5" c:type="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved6">
+        <callback name="gtk_reserved6" c:type="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved7">
+        <callback name="gtk_reserved7" c:type="_gtk_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved8">
+        <callback name="gtk_reserved8" c:type="_gtk_reserved8">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved9">
+        <callback name="gtk_reserved9" c:type="_gtk_reserved9">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved10">
+        <callback name="gtk_reserved10" c:type="_gtk_reserved10">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved11">
+        <callback name="gtk_reserved11" c:type="_gtk_reserved11">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <enumeration name="SubmenuDirection"
+                 glib:type-name="GtkSubmenuDirection"
+                 glib:get-type="gtk_submenu_direction_get_type"
+                 c:type="GtkSubmenuDirection">
+      <member name="left"
+              value="0"
+              c:identifier="GTK_DIRECTION_LEFT"
+              glib:nick="left"/>
+      <member name="right"
+              value="1"
+              c:identifier="GTK_DIRECTION_RIGHT"
+              glib:nick="right"/>
+    </enumeration>
+    <enumeration name="SubmenuPlacement"
+                 glib:type-name="GtkSubmenuPlacement"
+                 glib:get-type="gtk_submenu_placement_get_type"
+                 c:type="GtkSubmenuPlacement">
+      <member name="top_bottom"
+              value="0"
+              c:identifier="GTK_TOP_BOTTOM"
+              glib:nick="top-bottom"/>
+      <member name="left_right"
+              value="1"
+              c:identifier="GTK_LEFT_RIGHT"
+              glib:nick="left-right"/>
+    </enumeration>
+    <constant name="TEXT_VIEW_PRIORITY_VALIDATE" value="5">
+      <type name="int"/>
+    </constant>
+    <constant name="TYPE_FUNDAMENTAL_LAST" value="-1">
+      <type name="int"/>
+    </constant>
+    <class name="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"/>
+      <constructor name="new" c:identifier="gtk_table_new">
+        <return-value transfer-ownership="full">
+          <type name="Table" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="rows" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="columns" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <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="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="columns" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <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="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="right_attach" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="top_attach" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="bottom_attach" transfer-ownership="none">
+            <type name="uint" 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="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="ypadding" transfer-ownership="none">
+            <type name="uint" 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="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="right_attach" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="top_attach" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="bottom_attach" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </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="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_row_spacing"
+              c:identifier="gtk_table_get_row_spacing"
+              doc="Gets the amount of space between row @row, and
+row @row + 1. See gtk_table_set_row_spacing().">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="row" transfer-ownership="none">
+            <type name="uint" 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="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_col_spacing"
+              c:identifier="gtk_table_get_col_spacing"
+              doc="Gets the amount of space between column @col, and
+column @col + 1. See gtk_table_set_col_spacing().">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="uint" 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="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_row_spacing"
+              c:identifier="gtk_table_get_default_row_spacing"
+              doc="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())">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </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="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_col_spacing"
+              c:identifier="gtk_table_get_default_col_spacing"
+              doc="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())">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </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="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_homogeneous"
+              c:identifier="gtk_table_get_homogeneous"
+              doc="Returns whether the table cells are all constrained to the same
+width and height. (See gtk_table_set_homogenous ())">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="column-spacing" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="homogeneous" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="n-columns" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="n-rows" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <property name="row-spacing" writable="1">
+        <type name="uint" c:type="guint"/>
+      </property>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="children">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="rows">
+        <type name="TableRowCol" c:type="GtkTableRowCol*"/>
+      </field>
+      <field name="cols">
+        <type name="TableRowCol" c:type="GtkTableRowCol*"/>
+      </field>
+      <field name="nrows">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="ncols">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="column_spacing">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="row_spacing">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="homogeneous" bits="1">
+        <type name="uint" c:type="guint"/>
+      </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="uint16" c:type="guint16"/>
+      </field>
+      <field name="right_attach" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="top_attach" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="bottom_attach" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="xpadding" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="ypadding" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="xexpand" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="yexpand" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="xshrink" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="yshrink" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="xfill" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="yfill" writable="1" bits="1">
+        <type name="uint" 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="TableRowCol" c:type="GtkTableRowCol">
+      <field name="requisition" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="allocation" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="spacing" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="need_expand" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="need_shrink" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="expand" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="shrink" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="empty" writable="1" bits="1">
+        <type name="uint" 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="uint" c:type="guint"/>
+      </field>
+      <field name="info" writable="1">
+        <type name="uint" 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">
+      <field name="list" writable="1">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="ref_count" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gtk_target_list_new"
+                   doc="Creates a new #GtkTargetList from an array of #GtkTargetEntry.">
+        <return-value transfer-ownership="full">
+          <type name="TargetList" c:type="GtkTargetList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+          </parameter>
+          <parameter name="ntargets" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="ref"
+              c:identifier="gtk_target_list_ref"
+              doc="Increases the reference count of a #GtkTargetList by one.">
+        <return-value transfer-ownership="full">
+          <type name="TargetList" c:type="GtkTargetList*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gtk_target_list_unref"
+              doc="Decreases the reference count of a #GtkTargetList by one.
+If the resulting reference count is zero, frees the list.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="add"
+              c:identifier="gtk_target_list_add"
+              doc="Appends another target to a #GtkTargetList.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="info" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_text_targets"
+              c:identifier="gtk_target_list_add_text_targets"
+              doc="Appends the text targets supported by #GtkSelection to
+the target list. All targets are added with the same @info."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_rich_text_targets"
+              c:identifier="gtk_target_list_add_rich_text_targets"
+              doc="will be added, serializable formats otherwise.
+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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="deserializable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_image_targets"
+              c:identifier="gtk_target_list_add_image_targets"
+              doc="how to convert a pixbuf into the format
+Appends the image targets supported by #GtkSelection to
+the target list. All targets are added with the same @info."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="writable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_uri_targets"
+              c:identifier="gtk_target_list_add_uri_targets"
+              doc="Appends the URI targets supported by #GtkSelection to
+the target list. All targets are added with the same @info."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="info" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_table"
+              c:identifier="gtk_target_list_add_table"
+              doc="Prepends a table of #GtkTargetEntry to a target list.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+          </parameter>
+          <parameter name="ntargets" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="gtk_target_list_remove"
+              doc="Removes a target from a target list.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find"
+              c:identifier="gtk_target_list_find"
+              doc="or %NULL
+Looks up a given target in a #GtkTargetList.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+          <parameter name="info" direction="out" transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </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="uint" c:type="guint"/>
+      </field>
+      <field name="info" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <class name="TearoffMenuItem"
+           c:type="GtkTearoffMenuItem"
+           parent="MenuItem"
+           glib:type-name="GtkTearoffMenuItem"
+           glib:get-type="gtk_tearoff_menu_item_get_type"
+           glib:type-struct="TearoffMenuItemClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_tearoff_menu_item_new">
+        <return-value transfer-ownership="full">
+          <type name="TearoffMenuItem" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <field name="menu_item">
+        <type name="MenuItem" c:type="GtkMenuItem"/>
+      </field>
+      <field name="torn_off" bits="1">
+        <type name="uint" c:type="guint"/>
+      </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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </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="bg_stipple" writable="1">
+        <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+      </field>
+      <field name="fg_stipple" writable="1">
+        <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+      </field>
+      <field name="rise" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="padding1" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="underline" writable="1" bits="4">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="strikethrough" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="draw_bg" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="inside_selection" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_text" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="pad1" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="pad2" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="pad3" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="pad4" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="TextAttrAppearance" c:type="GtkTextAttrAppearance">
+      <field name="attr" writable="1">
+        <type name="Pango.Attribute" c:type="PangoAttribute"/>
+      </field>
+      <field name="appearance" writable="1">
+        <type name="TextAppearance" c:type="GtkTextAppearance"/>
+      </field>
+    </record>
+    <record name="TextAttributes"
+            c:type="GtkTextAttributes"
+            glib:type-name="GtkTextAttributes"
+            glib:get-type="gtk_text_attributes_get_type">
+      <field name="refcount" writable="1">
+        <type name="uint" 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="double" c:type="gdouble"/>
+      </field>
+      <field name="left_margin" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="indent" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="right_margin" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="pixels_above_lines" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="pixels_below_lines" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="pixels_inside_wrap" writable="1">
+        <type name="int" 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="uint" c:type="guint"/>
+      </field>
+      <field name="bg_full_height" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="editable" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="realized" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="pad1" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="pad2" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="pad3" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="pad4" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="gtk_text_attributes_new"
+                   doc="Creates a #GtkTextAttributes, which describes
+a set of properties on some text.">
+        <return-value transfer-ownership="full">
+          <type name="TextAttributes" c:type="GtkTextAttributes*"/>
+        </return-value>
+      </constructor>
+      <method name="copy"
+              c:identifier="gtk_text_attributes_copy"
+              doc="Copies @src and returns a new #GtkTextAttributes.">
+        <return-value transfer-ownership="full">
+          <type name="TextAttributes" c:type="GtkTextAttributes*"/>
+        </return-value>
+      </method>
+      <method name="copy_values"
+              c:identifier="gtk_text_attributes_copy_values"
+              doc="Copies the values from @src to @dest so that @dest has the same values
+as @src. Frees existing values in @dest.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="TextAttributes" c:type="GtkTextAttributes*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unref"
+              c:identifier="gtk_text_attributes_unref"
+              doc="Decrements the reference count on @values, freeing the structure
+if the reference count reaches 0.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="ref"
+              c:identifier="gtk_text_attributes_ref"
+              doc="Increments the reference count on @values.">
+        <return-value transfer-ownership="full">
+          <type name="TextAttributes" c:type="GtkTextAttributes*"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="TextBTree" c:type="GtkTextBTree">
+    </record>
+    <class name="TextBuffer"
+           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="Creates a new text buffer.">
+        <return-value transfer-ownership="full">
+          <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+        </return-value>
+        <parameters>
+          <parameter name="table"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a tag table, or %NULL to create a new one">
+            <type name="TextTagTable" c:type="GtkTextTagTable*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_line_count"
+              c:identifier="gtk_text_buffer_get_line_count"
+              doc="Obtains the number of lines in the buffer. This value is cached, so
+the function is very fast.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_char_count"
+              c:identifier="gtk_text_buffer_get_char_count"
+              doc="Gets the number of characters in the buffer; note that characters
+and bytes are not the same, you can&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_tag_table"
+              c:identifier="gtk_text_buffer_get_tag_table"
+              doc="Get the #GtkTextTagTable associated with this buffer.">
+        <return-value transfer-ownership="none"
+                      doc="the buffer&apos;s tag table">
+          <type name="TextTagTable" c:type="GtkTextTagTable*"/>
+        </return-value>
+      </method>
+      <method name="set_text"
+              c:identifier="gtk_text_buffer_set_text"
+              doc="Deletes current contents of @buffer, and inserts @text instead. If">
+        <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="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert"
+              c:identifier="gtk_text_buffer_insert"
+              doc="Inserts @len bytes of @text at position @iter.  If @len is -1,
+entirety. Emits the &quot;insert-text&quot; 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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" 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="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_at_cursor"
+              c:identifier="gtk_text_buffer_insert_at_cursor"
+              doc="Simply calls gtk_text_buffer_insert(), using the current
+cursor position as the insertion point.">
+        <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="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_interactive"
+              c:identifier="gtk_text_buffer_insert_interactive"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" 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="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="default_editable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_interactive_at_cursor"
+              c:identifier="gtk_text_buffer_insert_interactive_at_cursor"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="default_editable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_range"
+              c:identifier="gtk_text_buffer_insert_range"
+              doc="Copies text, tags, and pixbufs between @start and @end (the order
+of @start and @end doesn&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </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>
+      </method>
+      <method name="insert_range_interactive"
+              c:identifier="gtk_text_buffer_insert_range_interactive"
+              doc="Same as gtk_text_buffer_insert_range(), but does nothing if the
+insertion point isn&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </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="default_editable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_with_tags"
+              c:identifier="gtk_text_buffer_insert_with_tags"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" 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="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="first_tag" transfer-ownership="none">
+            <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"
+              doc="Same as gtk_text_buffer_insert_with_tags(), but allows you
+to pass in tag names instead of tag objects.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" 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="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="first_tag_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete"
+              c:identifier="gtk_text_buffer_delete"
+              doc="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 &quot;delete-range&quot; 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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="delete_interactive"
+              c:identifier="gtk_text_buffer_delete_interactive"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="end_iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="default_editable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backspace"
+              c:identifier="gtk_text_buffer_backspace"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="interactive" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="default_editable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text"
+              c:identifier="gtk_text_buffer_get_text"
+              doc="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().">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <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="include_hidden_chars" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_slice"
+              c:identifier="gtk_text_buffer_get_slice"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <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="include_hidden_chars" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_pixbuf"
+              c:identifier="gtk_text_buffer_insert_pixbuf"
+              doc="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
+&quot;object replacement character&quot; 0xFFFC. Note that the &quot;slice&quot;
+variants for obtaining portions of the buffer as a string include
+this character for pixbufs, but the &quot;text&quot; variants do
+not. e.g. see gtk_text_buffer_get_slice() and
+gtk_text_buffer_get_text().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" 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>
+      </method>
+      <method name="insert_child_anchor"
+              c:identifier="gtk_text_buffer_insert_child_anchor"
+              doc="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 &quot;object replacement character&quot; 0xFFFC. Note that the
+&quot;slice&quot; variants for obtaining portions of the buffer as a string
+include this character for child anchors, but the &quot;text&quot; 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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="anchor" transfer-ownership="none">
+            <type name="TextChildAnchor" c:type="GtkTextChildAnchor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_child_anchor"
+              c:identifier="gtk_text_buffer_create_child_anchor"
+              doc="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().">
+        <return-value transfer-ownership="full">
+          <type name="TextChildAnchor" c:type="GtkTextChildAnchor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_mark"
+              c:identifier="gtk_text_buffer_add_mark"
+              doc="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 &quot;mark-set&quot; signal as notification of the mark&apos;s initial
+placement."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mark" transfer-ownership="none">
+            <type name="TextMark" c:type="GtkTextMark*"/>
+          </parameter>
+          <parameter name="where" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_mark"
+              c:identifier="gtk_text_buffer_create_mark"
+              doc="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&apos;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&apos;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 &quot;mark-set&quot; signal as notification of the mark&apos;s initial
+placement.">
+        <return-value transfer-ownership="full">
+          <type name="TextMark" c:type="GtkTextMark*"/>
+        </return-value>
+        <parameters>
+          <parameter name="mark_name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="name for mark, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="where" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="left_gravity" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_mark"
+              c:identifier="gtk_text_buffer_move_mark"
+              doc="Moves @mark to the new location @where. Emits the &quot;mark-set&quot; signal
+as notification of the move.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mark" transfer-ownership="none">
+            <type name="TextMark" c:type="GtkTextMark*"/>
+          </parameter>
+          <parameter name="where" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_mark"
+              c:identifier="gtk_text_buffer_delete_mark"
+              doc="Deletes @mark, so that it&apos;s no longer located anywhere in the
+buffer. Removes the reference the buffer holds to the mark, so if
+you haven&apos;t called g_object_ref() on the mark, it will be freed. Even
+if the mark isn&apos;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 &quot;mark-deleted&quot; signal will be emitted as notification after
+the mark is deleted.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mark" transfer-ownership="none">
+            <type name="TextMark" c:type="GtkTextMark*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mark"
+              c:identifier="gtk_text_buffer_get_mark"
+              doc="Returns the mark named @name in buffer @buffer, or %NULL if no such
+mark exists in the buffer.">
+        <return-value transfer-ownership="none" doc="a #GtkTextMark, or %NULL">
+          <type name="TextMark" c:type="GtkTextMark*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_mark_by_name"
+              c:identifier="gtk_text_buffer_move_mark_by_name"
+              doc="Moves the mark named @name (which must exist) to location @where.
+See gtk_text_buffer_move_mark() for details.">
+        <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="where" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="delete_mark_by_name"
+              c:identifier="gtk_text_buffer_delete_mark_by_name"
+              doc="Deletes the mark named @name; the mark must exist. See
+gtk_text_buffer_delete_mark() for details.">
+        <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_insert"
+              c:identifier="gtk_text_buffer_get_insert"
+              doc="Returns the mark that represents the cursor (insertion point).
+Equivalent to calling gtk_text_buffer_get_mark() to get the mark
+named &quot;insert&quot;, but very slightly more efficient, and involves less
+typing.">
+        <return-value transfer-ownership="none" doc="insertion point mark">
+          <type name="TextMark" c:type="GtkTextMark*"/>
+        </return-value>
+      </method>
+      <method name="get_selection_bound"
+              c:identifier="gtk_text_buffer_get_selection_bound"
+              doc="Returns the mark that represents the selection bound.  Equivalent
+to calling gtk_text_buffer_get_mark() to get the mark named
+&quot;selection_bound&quot;, but very slightly more efficient, and involves
+less typing.
+The currently-selected text in @buffer is the region between the
+&quot;selection_bound&quot; and &quot;insert&quot; marks. If &quot;selection_bound&quot; and
+&quot;insert&quot; 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&apos;s a
+selection and what its bounds are.">
+        <return-value transfer-ownership="none" doc="selection bound mark">
+          <type name="TextMark" c:type="GtkTextMark*"/>
+        </return-value>
+      </method>
+      <method name="place_cursor"
+              c:identifier="gtk_text_buffer_place_cursor"
+              doc="This function moves the &quot;insert&quot; and &quot;selection_bound&quot; 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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="where" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_range"
+              c:identifier="gtk_text_buffer_select_range"
+              doc="This function moves the &quot;insert&quot; and &quot;selection_bound&quot; 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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ins" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="bound" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="apply_tag"
+              c:identifier="gtk_text_buffer_apply_tag"
+              doc="Emits the &quot;apply-tag&quot; signal on @buffer. The default
+handler for the signal applies @tag to the given range.">
+        <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="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>
+      </method>
+      <method name="remove_tag"
+              c:identifier="gtk_text_buffer_remove_tag"
+              doc="Emits the &quot;remove-tag&quot; signal. The default handler for the signal
+removes all occurrences of @tag from the given range. @start and">
+        <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="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>
+      </method>
+      <method name="apply_tag_by_name"
+              c:identifier="gtk_text_buffer_apply_tag_by_name"
+              doc="Calls gtk_text_tag_table_lookup() on the buffer&apos;s tag table to
+get a #GtkTextTag, then calls gtk_text_buffer_apply_tag().">
+        <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="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>
+      </method>
+      <method name="remove_tag_by_name"
+              c:identifier="gtk_text_buffer_remove_tag_by_name"
+              doc="Calls gtk_text_tag_table_lookup() on the buffer&apos;s tag table to
+get a #GtkTextTag, then calls gtk_text_buffer_remove_tag().">
+        <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="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>
+      </method>
+      <method name="remove_all_tags"
+              c:identifier="gtk_text_buffer_remove_all_tags"
+              doc="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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="create_tag"
+              c:identifier="gtk_text_buffer_create_tag"
+              doc="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&apos;s tag table. The returned tag is owned by
+the buffer&apos;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().">
+        <return-value transfer-ownership="full">
+          <type name="TextTag" c:type="GtkTextTag*"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag_name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="name of the new tag, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="first_property_name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="name of first property to set, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_at_line_offset"
+              c:identifier="gtk_text_buffer_get_iter_at_line_offset"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="line_number" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="char_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_at_line_index"
+              c:identifier="gtk_text_buffer_get_iter_at_line_index"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="line_number" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="byte_index" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_at_offset"
+              c:identifier="gtk_text_buffer_get_iter_at_offset"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="char_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_at_line"
+              c:identifier="gtk_text_buffer_get_iter_at_line"
+              doc="Initializes @iter to the start of the given line.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="line_number" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_start_iter"
+              c:identifier="gtk_text_buffer_get_start_iter"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_end_iter"
+              c:identifier="gtk_text_buffer_get_end_iter"
+              doc="Initializes @iter with the &quot;end iterator,&quot; 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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bounds"
+              c:identifier="gtk_text_buffer_get_bounds"
+              doc="Retrieves the first and last iterators in the buffer, i.e. the
+entire buffer lies within the range [@start,@end).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="get_iter_at_mark"
+              c:identifier="gtk_text_buffer_get_iter_at_mark"
+              doc="Initializes @iter with the current position of @mark.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="mark" transfer-ownership="none">
+            <type name="TextMark" c:type="GtkTextMark*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_at_child_anchor"
+              c:identifier="gtk_text_buffer_get_iter_at_child_anchor"
+              doc="Obtains the location of @anchor within @buffer.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="anchor" transfer-ownership="none">
+            <type name="TextChildAnchor" c:type="GtkTextChildAnchor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_modified"
+              c:identifier="gtk_text_buffer_get_modified"
+              doc="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 &quot;save&quot; function in a text
+editor.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_modified"
+              c:identifier="gtk_text_buffer_set_modified"
+              doc="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 &quot;modified-changed&quot; signal.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_has_selection"
+              c:identifier="gtk_text_buffer_get_has_selection"
+              doc="Indicates whether the buffer has some text currently selected."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="add_selection_clipboard"
+              c:identifier="gtk_text_buffer_add_selection_clipboard"
+              doc="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.">
+        <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>
+        </parameters>
+      </method>
+      <method name="remove_selection_clipboard"
+              c:identifier="gtk_text_buffer_remove_selection_clipboard"
+              doc="gtk_text_buffer_add_selection_clipboard()
+Removes a #GtkClipboard added with
+gtk_text_buffer_add_selection_clipboard().">
+        <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>
+        </parameters>
+      </method>
+      <method name="cut_clipboard"
+              c:identifier="gtk_text_buffer_cut_clipboard"
+              doc="Copies the currently-selected text to a clipboard, then deletes
+said text if it&apos;s editable.">
+        <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="default_editable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy_clipboard"
+              c:identifier="gtk_text_buffer_copy_clipboard"
+              doc="Copies the currently-selected text to a clipboard.">
+        <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>
+        </parameters>
+      </method>
+      <method name="paste_clipboard"
+              c:identifier="gtk_text_buffer_paste_clipboard"
+              doc="at the cursor
+Pastes the contents of a clipboard at the insertion point, or at
+ask for the paste data and return, and at some point later after
+the main loop runs, the paste data will be inserted.)">
+        <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="override_location"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="location to insert pasted text, or %NULL for">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="default_editable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selection_bounds"
+              c:identifier="gtk_text_buffer_get_selection_bounds"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="delete_selection"
+              c:identifier="gtk_text_buffer_delete_selection"
+              doc="Deletes the range between the &quot;insert&quot; and &quot;selection_bound&quot; marks,
+that is, the currently-selected text. If @interactive is %TRUE,
+the editability of the selection will be considered (users can&apos;t delete
+uneditable text).">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="interactive" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="default_editable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_user_action"
+              c:identifier="gtk_text_buffer_begin_user_action"
+              doc="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
+&quot;begin-user-action&quot; and &quot;end-user-action&quot; signals only for the
+outermost pair of calls. This allows you to build user actions
+from other user actions.
+The &quot;interactive&quot; buffer mutation functions, such as
+gtk_text_buffer_insert_interactive(), automatically call begin/end
+user action around the buffer operations they perform, so there&apos;s
+no need to add extra calls if you user action consists solely of a
+single call to one of those functions.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="end_user_action"
+              c:identifier="gtk_text_buffer_end_user_action"
+              doc="Should be paired with a call to gtk_text_buffer_begin_user_action().
+See that function for a full explanation.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_copy_target_list"
+              c:identifier="gtk_text_buffer_get_copy_target_list"
+              doc="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()."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="TargetList" c:type="GtkTargetList*"/>
+        </return-value>
+      </method>
+      <method name="get_paste_target_list"
+              c:identifier="gtk_text_buffer_get_paste_target_list"
+              doc="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()."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="TargetList" c:type="GtkTargetList*"/>
+        </return-value>
+      </method>
+      <method name="register_serialize_format"
+              c:identifier="gtk_text_buffer_register_serialize_format"
+              doc="This function registers a rich text serialization @function along with
+its @mime_type with the passed @buffer.
+format&apos;s mime-type."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </return-value>
+        <parameters>
+          <parameter name="mime_type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="function"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <type name="TextBufferSerializeFunc"
+                  c:type="GtkTextBufferSerializeFunc"/>
+          </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="register_serialize_tagset"
+              c:identifier="gtk_text_buffer_register_serialize_tagset"
+              doc="This function registers GTK+&apos;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&apos;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 &quot;application/x-gtk-text-buffer-rich-text&quot;, or
+&quot;application/x-gtk-text-buffer-rich-text;format=@tagset_name&quot; 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&apos;s mime-type."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </return-value>
+        <parameters>
+          <parameter name="tagset_name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="an optional tagset name, on %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="register_deserialize_format"
+              c:identifier="gtk_text_buffer_register_deserialize_format"
+              doc="This function registers a rich text deserialization @function along with
+its @mime_type with the passed @buffer.
+format&apos;s mime-type."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </return-value>
+        <parameters>
+          <parameter name="mime_type" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="function"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <type name="TextBufferDeserializeFunc"
+                  c:type="GtkTextBufferDeserializeFunc"/>
+          </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="register_deserialize_tagset"
+              c:identifier="gtk_text_buffer_register_deserialize_tagset"
+              doc="This function registers GTK+&apos;s internal rich text serialization
+format with the passed @buffer. See
+gtk_text_buffer_register_serialize_tagset() for details.
+format&apos;s mime-type."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </return-value>
+        <parameters>
+          <parameter name="tagset_name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="an optional tagset name, on %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unregister_serialize_format"
+              c:identifier="gtk_text_buffer_unregister_serialize_format"
+              doc="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()"
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unregister_deserialize_format"
+              c:identifier="gtk_text_buffer_unregister_deserialize_format"
+              doc="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()."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <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"
+              doc="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&apos;s text buffers and you know that it&apos;s fine to receive new
+tags from these buffers, because you know that your application can
+handle the newly created tags."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+          <parameter name="can_create_tags" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="deserialize_get_can_create_tags"
+              c:identifier="gtk_text_buffer_deserialize_get_can_create_tags"
+              doc="This functions returns the value set with
+gtk_text_buffer_deserialize_set_can_create_tags()"
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_serialize_formats"
+              c:identifier="gtk_text_buffer_get_serialize_formats"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Atom" c:type="GdkAtom*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_formats"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_deserialize_formats"
+              c:identifier="gtk_text_buffer_get_deserialize_formats"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Atom" c:type="GdkAtom*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_formats"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="serialize"
+              c:identifier="gtk_text_buffer_serialize"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </return-value>
+        <parameters>
+          <parameter name="content_buffer" transfer-ownership="none">
+            <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </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" direction="out" transfer-ownership="full">
+            <type name="size_t" c:type="gsize*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="deserialize"
+              c:identifier="gtk_text_buffer_deserialize"
+              doc="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."
+              version="2.10"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="content_buffer" transfer-ownership="none">
+            <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+          </parameter>
+          <parameter name="format" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <array c:type="guint8*">
+              <type name="uint8"/>
+            </array>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="size_t" c:type="gsize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="copy-target-list"
+                version="2.10"
+                doc="The list of targets this buffer supports for clipboard copying
+and as DND source.">
+        <type name="TargetList" c:type="GtkTargetList"/>
+      </property>
+      <property name="cursor-position"
+                version="2.10"
+                doc="The position of the insert mark (as offset from the beginning
+of the buffer). It is useful for getting notified when the
+cursor moves.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="has-selection"
+                version="2.10"
+                doc="Whether the buffer has some text currently selected.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="paste-target-list"
+                version="2.10"
+                doc="The list of targets this buffer supports for clipboard pasting
+and as DND destination.">
+        <type name="TargetList" c:type="GtkTargetList"/>
+      </property>
+      <property name="tag-table" writable="1" construct-only="1">
+        <type name="TextTagTable" c:type="GtkTextTagTable"/>
+      </property>
+      <property name="text"
+                version="2.8"
+                writable="1"
+                doc="The text content of the buffer. Without child widgets and images,
+see gtk_text_buffer_get_text() for more information.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="tag_table">
+        <type name="TextTagTable" c:type="GtkTextTagTable*"/>
+      </field>
+      <field name="btree">
+        <type name="TextBTree" c:type="GtkTextBTree*"/>
+      </field>
+      <field name="clipboard_contents_buffers">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="selection_clipboards">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="log_attr_cache">
+        <type name="TextLogAttrCache" c:type="GtkTextLogAttrCache*"/>
+      </field>
+      <field name="user_action_count">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="modified" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_selection" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="apply-tag"
+                   doc="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).
+See also:
+gtk_text_buffer_apply_tag(),
+gtk_text_buffer_insert_with_tags(),
+gtk_text_buffer_insert_range().">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="TextTag" c:type="GtkTextTag"/>
+          </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>
+      </glib:signal>
+      <glib:signal name="begin-user-action"
+                   doc="The ::begin-user-action signal is emitted at the beginning of a single
+user-visible operation on a #GtkTextBuffer.
+See also:
+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().">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="changed"
+                   doc="The ::changed signal is emitted when the content of a #GtkTextBuffer
+has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="delete-range"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </glib:signal>
+      <glib:signal name="end-user-action"
+                   doc="The ::end-user-action signal is emitted at the end of a single
+user-visible operation on the #GtkTextBuffer.
+See also:
+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().">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="insert-child-anchor"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="location" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter"/>
+          </parameter>
+          <parameter name="anchor" transfer-ownership="none">
+            <type name="TextChildAnchor" c:type="GtkTextChildAnchor"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="insert-pixbuf"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="location" 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>
+      </glib:signal>
+      <glib:signal name="insert-text"
+                   doc="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.
+See also:
+gtk_text_buffer_insert(),
+gtk_text_buffer_insert_range().">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="location" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="mark-deleted"
+                   doc="The ::mark-deleted signal is emitted as notification
+after a #GtkTextMark is deleted.
+See also:
+gtk_text_buffer_delete_mark().">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mark" transfer-ownership="none">
+            <type name="TextMark" c:type="GtkTextMark"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="mark-set"
+                   doc="The ::mark-set signal is emitted as notification
+after a #GtkTextMark is set.
+See also:
+gtk_text_buffer_create_mark(),
+gtk_text_buffer_move_mark().">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </glib:signal>
+      <glib:signal name="modified-changed"
+                   doc="The ::modified-changed signal is emitted when the modified bit of a
+#GtkTextBuffer flips.
+See also:
+gtk_text_buffer_set_modified().">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="paste-done"
+                   doc="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."
+                   version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="since" transfer-ownership="none">
+            <type name="Clipboard" c:type="GtkClipboard"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="remove-tag"
+                   doc="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).
+See also:
+gtk_text_buffer_remove_tag().">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="TextTag" c:type="GtkTextTag"/>
+          </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>
+      </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" c:type="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="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="insert_pixbuf">
+        <callback name="insert_pixbuf" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved5">
+        <callback name="gtk_reserved5" c:type="_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="boolean" 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">
+          <array c:type="guint8*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="size_t" c:type="gsize"/>
+        </parameter>
+        <parameter name="create_tags" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="6">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="TextBufferSerializeFunc"
+              c:type="GtkTextBufferSerializeFunc">
+      <return-value transfer-ownership="full">
+        <array c:type="guint8*">
+          <type name="uint8"/>
+        </array>
+      </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" direction="out" transfer-ownership="full">
+          <type name="size_t" c:type="gsize*"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="5">
+          <type name="any" 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">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <type name="GLib.unichar" c:type="gunichar"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="1">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="TextChildAnchor"
+           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="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().">
+        <return-value transfer-ownership="full">
+          <type name="TextChildAnchor" c:type="GtkTextChildAnchor*"/>
+        </return-value>
+      </constructor>
+      <method name="get_widgets"
+              c:identifier="gtk_text_child_anchor_get_widgets"
+              doc="Gets a list of all widgets anchored at this child anchor.
+The returned list should be freed with g_list_free().">
+        <return-value transfer-ownership="container"
+                      doc="list of widgets anchored at @anchor">
+          <type name="GLib.List" c:type="GList*">
+            <type name="Widget"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_deleted"
+              c:identifier="gtk_text_child_anchor_get_deleted"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="register_child"
+              c:identifier="gtk_text_child_anchor_register_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="layout" transfer-ownership="none">
+            <type name="TextLayout" c:type="GtkTextLayout*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unregister_child"
+              c:identifier="gtk_text_child_anchor_unregister_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>
+        </parameters>
+      </method>
+      <method name="queue_resize"
+              c:identifier="gtk_text_child_anchor_queue_resize">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layout" transfer-ownership="none">
+            <type name="TextLayout" c:type="GtkTextLayout*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="segment">
+        <type name="any" 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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="TextCursorDisplay" c:type="GtkTextCursorDisplay">
+      <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="height" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="is_strong" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_weak" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </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>
+    <callback name="TextFunction" c:type="GtkTextFunction">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="editable" transfer-ownership="none">
+          <type name="OldEditable" c:type="GtkOldEditable*"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TextIter"
+            c:type="GtkTextIter"
+            glib:type-name="GtkTextIter"
+            glib:get-type="gtk_text_iter_get_type">
+      <field name="dummy1" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="dummy2" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="dummy3" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="dummy4" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="dummy5" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="dummy6" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="dummy7" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="dummy8" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="dummy9" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="dummy10" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="dummy11" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="dummy12" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="dummy13" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="dummy14" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <method name="get_buffer"
+              c:identifier="gtk_text_iter_get_buffer"
+              doc="Returns the #GtkTextBuffer this iterator is associated with.">
+        <return-value transfer-ownership="none" doc="the buffer">
+          <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="gtk_text_iter_copy"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="TextIter" c:type="GtkTextIter*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gtk_text_iter_free"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_offset"
+              c:identifier="gtk_text_iter_get_offset"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_line"
+              c:identifier="gtk_text_iter_get_line"
+              doc="Returns the line number containing the iterator. Lines in
+a #GtkTextBuffer are numbered beginning with 0 for the first
+line in the buffer.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_line_offset"
+              c:identifier="gtk_text_iter_get_line_offset"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_line_index"
+              c:identifier="gtk_text_iter_get_line_index"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_visible_line_offset"
+              c:identifier="gtk_text_iter_get_visible_line_offset"
+              doc="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 &quot;invisible&quot; flag
+toggled on.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_visible_line_index"
+              c:identifier="gtk_text_iter_get_visible_line_index"
+              doc="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 &quot;invisible&quot; flag
+toggled on.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_char"
+              c:identifier="gtk_text_iter_get_char"
+              doc="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 &quot;unknown&quot; 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.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.unichar" c:type="gunichar"/>
+        </return-value>
+      </method>
+      <method name="get_slice"
+              c:identifier="gtk_text_iter_get_slice"
+              doc="Returns the text in the given range. A &quot;slice&quot; is an array of
+characters encoded in UTF-8 format, including the Unicode &quot;unknown&quot;
+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.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="end" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text"
+              c:identifier="gtk_text_iter_get_text"
+              doc="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 ().">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="end" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible_slice"
+              c:identifier="gtk_text_iter_get_visible_slice"
+              doc="Like gtk_text_iter_get_slice (), but invisible text is not included.
+Invisible text is usually invisible because a #GtkTextTag with the
+&quot;invisible&quot; attribute turned on has been applied to it.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="end" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible_text"
+              c:identifier="gtk_text_iter_get_visible_text"
+              doc="Like gtk_text_iter_get_text (), but invisible text is not included.
+Invisible text is usually invisible because a #GtkTextTag with the
+&quot;invisible&quot; attribute turned on has been applied to it.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="end" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixbuf"
+              c:identifier="gtk_text_iter_get_pixbuf"
+              doc="If the element at @iter is a pixbuf, the pixbuf is returned
+(with no new reference count added). Otherwise,
+%NULL is returned.">
+        <return-value transfer-ownership="none" doc="the pixbuf at @iter">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="get_marks"
+              c:identifier="gtk_text_iter_get_marks"
+              doc="Returns a list of all #GtkTextMark at this location. Because marks
+are not iterable (they don&apos;t take up any &quot;space&quot; 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.">
+        <return-value transfer-ownership="container"
+                      doc="list of #GtkTextMark">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="TextMark"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_child_anchor"
+              c:identifier="gtk_text_iter_get_child_anchor"
+              doc="If the location at @iter contains a child anchor, the
+anchor is returned (with no new reference count added). Otherwise,
+%NULL is returned.">
+        <return-value transfer-ownership="full">
+          <type name="TextChildAnchor" c:type="GtkTextChildAnchor*"/>
+        </return-value>
+      </method>
+      <method name="get_toggled_tags"
+              c:identifier="gtk_text_iter_get_toggled_tags"
+              doc="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.">
+        <return-value transfer-ownership="container"
+                      doc="tags toggled at this point">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="TextTag"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="toggled_on" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begins_tag"
+              c:identifier="gtk_text_iter_begins_tag"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkTextTag, or %NULL">
+            <type name="TextTag" c:type="GtkTextTag*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ends_tag"
+              c:identifier="gtk_text_iter_ends_tag"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkTextTag, or %NULL">
+            <type name="TextTag" c:type="GtkTextTag*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="toggles_tag"
+              c:identifier="gtk_text_iter_toggles_tag"
+              doc="This is equivalent to (gtk_text_iter_begins_tag () ||
+gtk_text_iter_ends_tag ()), i.e. it tells you whether a range with">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkTextTag, or %NULL">
+            <type name="TextTag" c:type="GtkTextTag*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_tag"
+              c:identifier="gtk_text_iter_has_tag"
+              doc="Returns %TRUE if @iter is within a range tagged with @tag.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag" transfer-ownership="none">
+            <type name="TextTag" c:type="GtkTextTag*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tags"
+              c:identifier="gtk_text_iter_get_tags"
+              doc="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&apos;t have a reference added, but you have to free the list
+itself.">
+        <return-value transfer-ownership="container" doc="list of #GtkTextTag">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="TextTag"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="editable"
+              c:identifier="gtk_text_iter_editable"
+              doc="Returns whether the character at @iter is within an editable region
+of text.  Non-editable text is &quot;locked&quot; and can&apos;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&apos;t want to use this function to decide whether text can be
+inserted at @iter, because for insertion you don&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="default_setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="can_insert"
+              c:identifier="gtk_text_iter_can_insert"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="default_editability" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="starts_word"
+              c:identifier="gtk_text_iter_starts_word"
+              doc="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).">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="ends_word"
+              c:identifier="gtk_text_iter_ends_word"
+              doc="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).">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="inside_word"
+              c:identifier="gtk_text_iter_inside_word"
+              doc="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).">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="starts_sentence"
+              c:identifier="gtk_text_iter_starts_sentence"
+              doc="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).">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="ends_sentence"
+              c:identifier="gtk_text_iter_ends_sentence"
+              doc="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).">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="inside_sentence"
+              c:identifier="gtk_text_iter_inside_sentence"
+              doc="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).">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="starts_line"
+              c:identifier="gtk_text_iter_starts_line"
+              doc="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&apos;t have to compute
+the offset, it just has to see whether it&apos;s 0.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="ends_line"
+              c:identifier="gtk_text_iter_ends_line"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_cursor_position"
+              c:identifier="gtk_text_iter_is_cursor_position"
+              doc="See gtk_text_iter_forward_cursor_position() or #PangoLogAttr or
+pango_break() for details on what a cursor position is.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_chars_in_line"
+              c:identifier="gtk_text_iter_get_chars_in_line"
+              doc="Returns the number of characters in the line containing @iter,
+including the paragraph delimiters.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_bytes_in_line"
+              c:identifier="gtk_text_iter_get_bytes_in_line"
+              doc="Returns the number of bytes in the line containing @iter,
+including the paragraph delimiters.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_attributes"
+              c:identifier="gtk_text_iter_get_attributes"
+              doc="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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="values" transfer-ownership="none">
+            <type name="TextAttributes" c:type="GtkTextAttributes*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_language"
+              c:identifier="gtk_text_iter_get_language"
+              doc="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 ().">
+        <return-value transfer-ownership="full">
+          <type name="Pango.Language" c:type="PangoLanguage*"/>
+        </return-value>
+      </method>
+      <method name="is_end"
+              c:identifier="gtk_text_iter_is_end"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_start"
+              c:identifier="gtk_text_iter_is_start"
+              doc="Returns %TRUE if @iter is the first iterator in the buffer, that is
+if @iter has a character offset of 0.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="forward_char"
+              c:identifier="gtk_text_iter_forward_char"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="backward_char"
+              c:identifier="gtk_text_iter_backward_char"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="forward_chars"
+              c:identifier="gtk_text_iter_forward_chars"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_chars"
+              c:identifier="gtk_text_iter_backward_chars"
+              doc="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&apos;t move, or
+moved onto the end iterator, then %FALSE is returned. If @count is 0,
+the function does nothing and returns %FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_line"
+              c:identifier="gtk_text_iter_forward_line"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="backward_line"
+              c:identifier="gtk_text_iter_backward_line"
+              doc="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.)">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="forward_lines"
+              c:identifier="gtk_text_iter_forward_lines"
+              doc="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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_lines"
+              c:identifier="gtk_text_iter_backward_lines"
+              doc="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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_word_end"
+              c:identifier="gtk_text_iter_forward_word_end"
+              doc="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).">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="backward_word_start"
+              c:identifier="gtk_text_iter_backward_word_start"
+              doc="Calls gtk_text_iter_backward_word_start() up to @count times.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="forward_word_ends"
+              c:identifier="gtk_text_iter_forward_word_ends"
+              doc="Calls gtk_text_iter_forward_word_end() up to @count times.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_word_starts"
+              c:identifier="gtk_text_iter_backward_word_starts">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_visible_line"
+              c:identifier="gtk_text_iter_forward_visible_line"
+              doc="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."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="backward_visible_line"
+              c:identifier="gtk_text_iter_backward_visible_line"
+              doc="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.)"
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="forward_visible_lines"
+              c:identifier="gtk_text_iter_forward_visible_lines"
+              doc="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&apos;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."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_visible_lines"
+              c:identifier="gtk_text_iter_backward_visible_lines"
+              doc="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&apos;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."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_visible_word_end"
+              c:identifier="gtk_text_iter_forward_visible_word_end"
+              doc="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)."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="backward_visible_word_start"
+              c:identifier="gtk_text_iter_backward_visible_word_start"
+              doc="Calls gtk_text_iter_backward_visible_word_start() up to @count times."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="forward_visible_word_ends"
+              c:identifier="gtk_text_iter_forward_visible_word_ends"
+              doc="Calls gtk_text_iter_forward_visible_word_end() up to @count times."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_visible_word_starts"
+              c:identifier="gtk_text_iter_backward_visible_word_starts">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_sentence_end"
+              c:identifier="gtk_text_iter_forward_sentence_end"
+              doc="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).">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="backward_sentence_start"
+              c:identifier="gtk_text_iter_backward_sentence_start"
+              doc="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).">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="forward_sentence_ends"
+              c:identifier="gtk_text_iter_forward_sentence_ends"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_sentence_starts"
+              c:identifier="gtk_text_iter_backward_sentence_starts"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_cursor_position"
+              c:identifier="gtk_text_iter_forward_cursor_position"
+              doc="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 &quot;a&quot; with an accent mark will be
+represented as two characters, first the letter then a &quot;combining
+mark&quot; that causes the accent to be rendered; so the cursor can&apos;t go
+between those two characters. See also the #PangoLogAttr structure and
+pango_break() function.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="backward_cursor_position"
+              c:identifier="gtk_text_iter_backward_cursor_position"
+              doc="Like gtk_text_iter_forward_cursor_position(), but moves backward.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="forward_cursor_positions"
+              c:identifier="gtk_text_iter_forward_cursor_positions"
+              doc="Moves up to @count cursor positions. See
+gtk_text_iter_forward_cursor_position() for details.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_cursor_positions"
+              c:identifier="gtk_text_iter_backward_cursor_positions"
+              doc="Moves up to @count cursor positions. See
+gtk_text_iter_forward_cursor_position() for details.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_visible_cursor_position"
+              c:identifier="gtk_text_iter_forward_visible_cursor_position"
+              doc="Moves @iter forward to the next visible cursor position. See
+gtk_text_iter_forward_cursor_position() for details."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="backward_visible_cursor_position"
+              c:identifier="gtk_text_iter_backward_visible_cursor_position"
+              doc="Moves @iter forward to the previous visible cursor position. See
+gtk_text_iter_backward_cursor_position() for details."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="forward_visible_cursor_positions"
+              c:identifier="gtk_text_iter_forward_visible_cursor_positions"
+              doc="Moves up to @count visible cursor positions. See
+gtk_text_iter_forward_cursor_position() for details."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_visible_cursor_positions"
+              c:identifier="gtk_text_iter_backward_visible_cursor_positions"
+              doc="Moves up to @count visible cursor positions. See
+gtk_text_iter_backward_cursor_position() for details."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_offset"
+              c:identifier="gtk_text_iter_set_offset"
+              doc="Sets @iter to point to @char_offset. @char_offset counts from the start
+of the entire text buffer, starting with 0.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="char_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_line"
+              c:identifier="gtk_text_iter_set_line"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="line_number" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_line_offset"
+              c:identifier="gtk_text_iter_set_line_offset"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="char_on_line" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_line_index"
+              c:identifier="gtk_text_iter_set_line_index"
+              doc="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&apos;t be in the middle of a UTF-8
+encoded character.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="byte_on_line" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_to_end"
+              c:identifier="gtk_text_iter_forward_to_end"
+              doc="Moves @iter forward to the &quot;end iterator,&quot; 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.">
+        <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="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_visible_line_offset"
+              c:identifier="gtk_text_iter_set_visible_line_offset"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="char_on_line" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visible_line_index"
+              c:identifier="gtk_text_iter_set_visible_line_index"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="byte_on_line" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_to_tag_toggle"
+              c:identifier="gtk_text_iter_forward_to_tag_toggle"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkTextTag, or %NULL">
+            <type name="TextTag" c:type="GtkTextTag*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_to_tag_toggle"
+              c:identifier="gtk_text_iter_backward_to_tag_toggle"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tag"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkTextTag, or %NULL">
+            <type name="TextTag" c:type="GtkTextTag*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_find_char"
+              c:identifier="gtk_text_iter_forward_find_char"
+              doc="Advances @iter, calling @pred on each character. If
+If @pred never returns %TRUE, @iter is set to @limit if">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pred"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="TextCharPredicate" c:type="GtkTextCharPredicate"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="limit"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="search limit, or %NULL for none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_find_char"
+              c:identifier="gtk_text_iter_backward_find_char"
+              doc="Same as gtk_text_iter_forward_find_char(), but goes backward from @iter.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="pred"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="TextCharPredicate" c:type="GtkTextCharPredicate"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="limit"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="search limit, or %NULL for none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_search"
+              c:identifier="gtk_text_iter_forward_search"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="TextSearchFlags" c:type="GtkTextSearchFlags"/>
+          </parameter>
+          <parameter name="match_start"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="return location for start of match, or %NULL">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="match_end"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="return location for end of match, or %NULL">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="limit"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="bound for the search, or %NULL for the end of the buffer">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_search"
+              c:identifier="gtk_text_iter_backward_search"
+              doc="Same as gtk_text_iter_forward_search(), but moves backward.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="flags" transfer-ownership="none">
+            <type name="TextSearchFlags" c:type="GtkTextSearchFlags"/>
+          </parameter>
+          <parameter name="match_start"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="return location for start of match, or %NULL">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="match_end"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="return location for end of match, or %NULL">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="limit"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="location of last possible @match_start, or %NULL for start of buffer">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="equal"
+              c:identifier="gtk_text_iter_equal"
+              doc="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&apos;s a bit faster than
+gtk_text_iter_compare().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="rhs" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="compare"
+              c:identifier="gtk_text_iter_compare"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="rhs" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="in_range"
+              c:identifier="gtk_text_iter_in_range"
+              doc="Checks whether @iter falls in the range [@start, @end).">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="order"
+              c:identifier="gtk_text_iter_order"
+              doc="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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="second" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <class name="TextLayout"
+           c:type="GtkTextLayout"
+           parent="GObject.Object"
+           glib:type-name="GtkTextLayout"
+           glib:get-type="gtk_text_layout_get_type"
+           glib:type-struct="TextLayoutClass">
+      <constructor name="new" c:identifier="gtk_text_layout_new">
+        <return-value transfer-ownership="full">
+          <type name="TextLayout" c:type="GtkTextLayout*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="wrap" invoker="wrap">
+        <return-value transfer-ownership="full">
+          <type name="TextLineData" c:type="GtkTextLineData*"/>
+        </return-value>
+        <parameters>
+          <parameter name="line" transfer-ownership="none">
+            <type name="TextLine" c:type="GtkTextLine*"/>
+          </parameter>
+          <parameter name="line_data" transfer-ownership="none">
+            <type name="TextLineData" c:type="GtkTextLineData*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_log_attrs">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="line" transfer-ownership="none">
+            <type name="TextLine" c:type="GtkTextLine*"/>
+          </parameter>
+          <parameter name="attrs" transfer-ownership="none">
+            <type name="Pango.LogAttr" c:type="PangoLogAttr**"/>
+          </parameter>
+          <parameter name="n_attrs" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="invalidate" invoker="invalidate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </virtual-method>
+      <virtual-method name="free_line_data" invoker="free_line_data">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="line" transfer-ownership="none">
+            <type name="TextLine" c:type="GtkTextLine*"/>
+          </parameter>
+          <parameter name="line_data" transfer-ownership="none">
+            <type name="TextLineData" c:type="GtkTextLineData*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="invalidate_cursors" invoker="invalidate_cursors">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </virtual-method>
+      <method name="set_buffer" c:identifier="gtk_text_layout_set_buffer">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none" allow-none="1">
+            <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_buffer"
+              c:identifier="gtk_text_layout_get_buffer"
+              doc="Gets the text buffer used by the layout. See
+gtk_text_layout_set_buffer().">
+        <return-value transfer-ownership="full">
+          <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+        </return-value>
+      </method>
+      <method name="set_default_style"
+              c:identifier="gtk_text_layout_set_default_style">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="values" transfer-ownership="none">
+            <type name="TextAttributes" c:type="GtkTextAttributes*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_contexts" c:identifier="gtk_text_layout_set_contexts">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ltr_context" transfer-ownership="none">
+            <type name="Pango.Context" c:type="PangoContext*"/>
+          </parameter>
+          <parameter name="rtl_context" transfer-ownership="none">
+            <type name="Pango.Context" c:type="PangoContext*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_direction"
+              c:identifier="gtk_text_layout_set_cursor_direction"
+              doc="%GTK_TEXT_DIR_NONE means draw cursors for both
+left-to-right insertion and right-to-left insertion.
+(The two cursors will be visually distinguished.)
+Sets which text directions (left-to-right and/or right-to-left) for
+which cursors will be drawn for the insertion point. The visual
+point at which new text is inserted depends on whether the new
+text is right-to-left or left-to-right, so it may be desired to
+make the drawn position of the cursor depend on the keyboard state.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction"
+                     transfer-ownership="none"
+                     doc="for which to draw cursors.">
+            <type name="TextDirection" c:type="GtkTextDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_overwrite_mode"
+              c:identifier="gtk_text_layout_set_overwrite_mode"
+              doc="Sets overwrite mode">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="overwrite" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_keyboard_direction"
+              c:identifier="gtk_text_layout_set_keyboard_direction"
+              doc="Sets the keyboard direction; this is used as for the bidirectional
+base direction for the line with the cursor if the line contains
+only neutral characters.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="keyboard_dir" transfer-ownership="none">
+            <type name="TextDirection" c:type="GtkTextDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="default_style_changed"
+              c:identifier="gtk_text_layout_default_style_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_screen_width"
+              c:identifier="gtk_text_layout_set_screen_width">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_preedit_string"
+              c:identifier="gtk_text_layout_set_preedit_string"
+              doc="Set the preedit string and attributes. The preedit string is a
+string showing text that is currently being edited and not
+yet committed into the buffer.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="preedit_string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="preedit_attrs" transfer-ownership="none">
+            <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+          </parameter>
+          <parameter name="cursor_pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_visible"
+              c:identifier="gtk_text_layout_set_cursor_visible"
+              doc="be shown, even if the text is editable.
+Sets whether the insertion cursor should be shown. Generally,
+widgets using #GtkTextLayout will hide the cursor when the
+widget does not have the input focus.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cursor_visible" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cursor_visible"
+              c:identifier="gtk_text_layout_get_cursor_visible"
+              doc="Returns whether the insertion cursor will be shown.
+shown, even if the text is editable.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_size" c:identifier="gtk_text_layout_get_size">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="get_lines" c:identifier="gtk_text_layout_get_lines">
+        <return-value transfer-ownership="container">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="TextLine"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="top_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="bottom_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="first_line_y"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wrap_loop_start"
+              c:identifier="gtk_text_layout_wrap_loop_start">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="wrap_loop_end"
+              c:identifier="gtk_text_layout_wrap_loop_end">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_line_display"
+              c:identifier="gtk_text_layout_get_line_display">
+        <return-value transfer-ownership="full">
+          <type name="TextLineDisplay" c:type="GtkTextLineDisplay*"/>
+        </return-value>
+        <parameters>
+          <parameter name="line" transfer-ownership="none">
+            <type name="TextLine" c:type="GtkTextLine*"/>
+          </parameter>
+          <parameter name="size_only" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free_line_display"
+              c:identifier="gtk_text_layout_free_line_display">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="display" transfer-ownership="none">
+            <type name="TextLineDisplay" c:type="GtkTextLineDisplay*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line_at_y"
+              c:identifier="gtk_text_layout_get_line_at_y"
+              doc="top of the line. (Can by %NULL)
+Get the iter at the beginning of the line which is displayed
+at the given y.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="target_iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="line_top" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_at_pixel"
+              c:identifier="gtk_text_layout_get_iter_at_pixel">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </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>
+        </parameters>
+      </method>
+      <method name="get_iter_at_position"
+              c:identifier="gtk_text_layout_get_iter_at_position">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="trailing" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </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>
+        </parameters>
+      </method>
+      <method name="invalidate" c:identifier="gtk_text_layout_invalidate">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="invalidate_cursors"
+              c:identifier="gtk_text_layout_invalidate_cursors">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="free_line_data"
+              c:identifier="gtk_text_layout_free_line_data">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="line" transfer-ownership="none">
+            <type name="TextLine" c:type="GtkTextLine*"/>
+          </parameter>
+          <parameter name="line_data" transfer-ownership="none">
+            <type name="TextLineData" c:type="GtkTextLineData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_valid"
+              c:identifier="gtk_text_layout_is_valid"
+              doc="Check if there are any invalid regions in a #GtkTextLayout&apos;s buffer">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="validate_yrange"
+              c:identifier="gtk_text_layout_validate_yrange"
+              doc="coordinate origin
+which to begin validation. (The offset here is in pixels
+after validation.)
+which to end validation. (The offset here is in pixels
+after validation.)
+Ensure that a region of a #GtkTextLayout is valid. The ::changed
+signal will be emitted if any lines are validated.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="anchor_line" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="y0_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y1_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="validate"
+              c:identifier="gtk_text_layout_validate"
+              doc="than one paragraph beyond this limit will be validated)
+Validate regions of a #GtkTextLayout. The ::changed signal will
+be emitted for each region validated.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max_pixels" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="wrap" c:identifier="gtk_text_layout_wrap">
+        <return-value transfer-ownership="full">
+          <type name="TextLineData" c:type="GtkTextLineData*"/>
+        </return-value>
+        <parameters>
+          <parameter name="line" transfer-ownership="none">
+            <type name="TextLine" c:type="GtkTextLine*"/>
+          </parameter>
+          <parameter name="line_data" transfer-ownership="none">
+            <type name="TextLineData" c:type="GtkTextLineData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="changed" c:identifier="gtk_text_layout_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="old_height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="new_height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="cursors_changed"
+              c:identifier="gtk_text_layout_cursors_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="old_height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="new_height" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_location"
+              c:identifier="gtk_text_layout_get_iter_location">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="rect" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line_yrange"
+              c:identifier="gtk_text_layout_get_line_yrange"
+              doc="or %NULL.
+or %NULL.
+Find the range of y coordinates for the paragraph containing
+the given iter.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="y" 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>
+      </method>
+      <method name="get_cursor_locations"
+              c:identifier="gtk_text_layout_get_cursor_locations"
+              doc="Given an iterator within a text layout, determine the positions of the
+strong and weak cursors if the insertion point is at that
+iterator. 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
+paragraph are inserted.  The weak cursor location is the location
+where characters of the directionality opposite to the base
+direction of the paragraph are inserted.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="strong_pos"
+                     transfer-ownership="none"
+                     allow-none="1">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="weak_pos" transfer-ownership="none" allow-none="1">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clamp_iter_to_vrange"
+              c:identifier="gtk_text_layout_clamp_iter_to_vrange"
+              doc="If the iterator is not fully in the range @top &lt;= y &lt; @bottom,
+then, if possible, move it the minimum distance so that the
+iterator in this range.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="top" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="bottom" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_iter_to_line_end"
+              c:identifier="gtk_text_layout_move_iter_to_line_end"
+              doc="ve to end of line.
+Move to the beginning or end of a display line.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_iter_to_previous_line"
+              c:identifier="gtk_text_layout_move_iter_to_previous_line"
+              doc="Move the iterator to the beginning of the previous line. The lines
+of a wrapped paragraph are treated as distinct for this operation.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_iter_to_next_line"
+              c:identifier="gtk_text_layout_move_iter_to_next_line"
+              doc="Move the iterator to the beginning of the next line. The
+lines of a wrapped paragraph are treated as distinct for
+this operation.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_iter_to_x"
+              c:identifier="gtk_text_layout_move_iter_to_x"
+              doc="Keeping the iterator on the same line of the layout, move it to the
+specified X coordinate. The lines of a wrapped paragraph are
+treated as distinct for this operation.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_iter_visually"
+              c:identifier="gtk_text_layout_move_iter_visually"
+              doc="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 bidirection 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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_starts_line"
+              c:identifier="gtk_text_layout_iter_starts_line"
+              doc="Tests whether an iterator is at the start of a display line.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_at_line"
+              c:identifier="gtk_text_layout_get_iter_at_line">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="line" transfer-ownership="none">
+            <type name="TextLine" c:type="GtkTextLine*"/>
+          </parameter>
+          <parameter name="byte_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="spew" c:identifier="gtk_text_layout_spew">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="draw" c:identifier="gtk_text_layout_draw">
+        <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="drawable" transfer-ownership="none">
+            <type name="Gdk.Drawable" c:type="GdkDrawable*"/>
+          </parameter>
+          <parameter name="cursor_gc" transfer-ownership="none">
+            <type name="Gdk.GC" c:type="GdkGC*"/>
+          </parameter>
+          <parameter name="x_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="y_offset" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </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>
+          <parameter name="widgets" transfer-ownership="none">
+            <type name="GLib.List" c:type="GList**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="screen_width">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="width">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="height">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="buffer">
+        <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+      </field>
+      <field name="default_style">
+        <type name="TextAttributes" c:type="GtkTextAttributes*"/>
+      </field>
+      <field name="ltr_context">
+        <type name="Pango.Context" c:type="PangoContext*"/>
+      </field>
+      <field name="rtl_context">
+        <type name="Pango.Context" c:type="PangoContext*"/>
+      </field>
+      <field name="one_style_cache">
+        <type name="TextAttributes" c:type="GtkTextAttributes*"/>
+      </field>
+      <field name="one_display_cache">
+        <type name="TextLineDisplay" c:type="GtkTextLineDisplay*"/>
+      </field>
+      <field name="wrap_loop_count">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="cursor_visible" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="cursor_direction" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="keyboard_direction" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="preedit_string">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="preedit_attrs">
+        <type name="Pango.AttrList" c:type="PangoAttrList*"/>
+      </field>
+      <field name="preedit_len">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="preedit_cursor">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="overwrite_mode" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="allocate-child">
+        <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="GtkObject"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="invalidated">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+    </class>
+    <record name="TextLayoutClass"
+            c:type="GtkTextLayoutClass"
+            glib:is-gtype-struct-for="TextLayout">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="invalidated">
+        <callback name="invalidated" c:type="invalidated">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="layout" transfer-ownership="none">
+              <type name="TextLayout" c:type="GtkTextLayout*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="changed">
+        <callback name="changed" c:type="changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="layout" transfer-ownership="none">
+              <type name="TextLayout" c:type="GtkTextLayout*"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="old_height" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="new_height" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="wrap">
+        <callback name="wrap" c:type="wrap">
+          <return-value transfer-ownership="full">
+            <type name="TextLineData" c:type="GtkTextLineData*"/>
+          </return-value>
+          <parameters>
+            <parameter name="layout" transfer-ownership="none">
+              <type name="TextLayout" c:type="GtkTextLayout*"/>
+            </parameter>
+            <parameter name="line" transfer-ownership="none">
+              <type name="TextLine" c:type="GtkTextLine*"/>
+            </parameter>
+            <parameter name="line_data" transfer-ownership="none">
+              <type name="TextLineData" c:type="GtkTextLineData*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_log_attrs">
+        <callback name="get_log_attrs" c:type="get_log_attrs">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="layout" transfer-ownership="none">
+              <type name="TextLayout" c:type="GtkTextLayout*"/>
+            </parameter>
+            <parameter name="line" transfer-ownership="none">
+              <type name="TextLine" c:type="GtkTextLine*"/>
+            </parameter>
+            <parameter name="attrs" transfer-ownership="none">
+              <type name="Pango.LogAttr" c:type="PangoLogAttr**"/>
+            </parameter>
+            <parameter name="n_attrs"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="invalidate">
+        <callback name="invalidate" c:type="invalidate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="layout" transfer-ownership="none">
+              <type name="TextLayout" c:type="GtkTextLayout*"/>
+            </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="free_line_data">
+        <callback name="free_line_data" c:type="free_line_data">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="layout" transfer-ownership="none">
+              <type name="TextLayout" c:type="GtkTextLayout*"/>
+            </parameter>
+            <parameter name="line" transfer-ownership="none">
+              <type name="TextLine" c:type="GtkTextLine*"/>
+            </parameter>
+            <parameter name="line_data" transfer-ownership="none">
+              <type name="TextLineData" c:type="GtkTextLineData*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="allocate_child">
+        <callback name="allocate_child" c:type="allocate_child">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="layout" transfer-ownership="none">
+              <type name="TextLayout" c:type="GtkTextLayout*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </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>
+          </parameters>
+        </callback>
+      </field>
+      <field name="invalidate_cursors">
+        <callback name="invalidate_cursors" c:type="invalidate_cursors">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="layout" transfer-ownership="none">
+              <type name="TextLayout" c:type="GtkTextLayout*"/>
+            </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="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="TextLine" c:type="GtkTextLine">
+    </record>
+    <record name="TextLineData" c:type="GtkTextLineData">
+    </record>
+    <record name="TextLineDisplay" c:type="GtkTextLineDisplay">
+      <field name="layout" writable="1">
+        <type name="Pango.Layout" c:type="PangoLayout*"/>
+      </field>
+      <field name="cursors" writable="1">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="shaped_objects" writable="1">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="direction" writable="1">
+        <type name="TextDirection" c:type="GtkTextDirection"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="total_width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="x_offset" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="left_margin" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="right_margin" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="top_margin" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="bottom_margin" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="insert_index" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="size_only" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </field>
+      <field name="line" writable="1">
+        <type name="TextLine" c:type="GtkTextLine*"/>
+      </field>
+      <field name="pg_bg_color" writable="1">
+        <type name="Gdk.Color" c:type="GdkColor*"/>
+      </field>
+      <field name="block_cursor" writable="1">
+        <type name="Gdk.Rectangle" c:type="GdkRectangle"/>
+      </field>
+      <field name="cursors_invalid" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_block_cursor" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="cursor_at_line_end" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="TextLogAttrCache" c:type="GtkTextLogAttrCache">
+    </record>
+    <class name="TextMark"
+           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"
+                   doc="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&apos;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&apos;re typing)."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="TextMark" c:type="GtkTextMark*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="mark name or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="left_gravity" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_visible"
+              c:identifier="gtk_text_mark_set_visible"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible"
+              c:identifier="gtk_text_mark_get_visible"
+              doc="Returns %TRUE if the mark is visible (i.e. a cursor is displayed
+for it).">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_name"
+              c:identifier="gtk_text_mark_get_name"
+              doc="Returns the mark name; returns NULL for anonymous marks.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_deleted"
+              c:identifier="gtk_text_mark_get_deleted"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_buffer"
+              c:identifier="gtk_text_mark_get_buffer"
+              doc="Gets the buffer this mark is located inside,
+or %NULL if the mark is deleted.">
+        <return-value transfer-ownership="none"
+                      doc="the mark&apos;s #GtkTextBuffer">
+          <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+        </return-value>
+      </method>
+      <method name="get_left_gravity"
+              c:identifier="gtk_text_mark_get_left_gravity"
+              doc="Determines whether the mark has left gravity.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="left-gravity" writable="1" construct-only="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="name" writable="1" construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="segment">
+        <type name="any" 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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="TextPendingScroll" c:type="GtkTextPendingScroll">
+    </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: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="Creates a #GtkTextTag. Configure the tag using object arguments,
+i.e. using g_object_set().">
+        <return-value transfer-ownership="full">
+          <type name="TextTag" c:type="GtkTextTag*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="tag name, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_priority"
+              c:identifier="gtk_text_tag_get_priority"
+              doc="Get the tag priority.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_priority"
+              c:identifier="gtk_text_tag_set_priority"
+              doc="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 &quot;win&quot; 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&apos;s table
+automatically.">
+        <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="event"
+              c:identifier="gtk_text_tag_event"
+              doc="Emits the &quot;event&quot; signal on the #GtkTextTag.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <property name="accumulative-margin"
+                version="2.12"
+                writable="1"
+                doc="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).">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="background" readable="0" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="background-full-height" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="background-full-height-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="background-gdk" writable="1">
+        <type name="Gdk.Color" c:type="GdkColor"/>
+      </property>
+      <property name="background-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="background-stipple" writable="1">
+        <type name="Gdk.Pixmap" c:type="GdkPixmap"/>
+      </property>
+      <property name="background-stipple-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="direction" writable="1">
+        <type name="TextDirection" c:type="GtkTextDirection"/>
+      </property>
+      <property name="editable" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="editable-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="family" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="family-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="font"
+                writable="1"
+                doc="Font description as string, e.g. \&quot;Sans Italic 12\&quot;.
+Note that the initial value of this property depends on
+the internals of #PangoFontDescription.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="font-desc" writable="1">
+        <type name="Pango.FontDescription" c:type="PangoFontDescription"/>
+      </property>
+      <property name="foreground" readable="0" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="foreground-gdk" writable="1">
+        <type name="Gdk.Color" c:type="GdkColor"/>
+      </property>
+      <property name="foreground-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="foreground-stipple" writable="1">
+        <type name="Gdk.Pixmap" c:type="GdkPixmap"/>
+      </property>
+      <property name="foreground-stipple-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="indent" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="indent-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="invisible"
+                version="2.8"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="invisible-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="justification" writable="1">
+        <type name="Justification" c:type="GtkJustification"/>
+      </property>
+      <property name="justification-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="language"
+                writable="1"
+                doc="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().">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="language-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="left-margin" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="left-margin-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="name" writable="1" construct-only="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="paragraph-background"
+                version="2.8"
+                readable="0"
+                writable="1"
+                doc="The paragraph background color as a string.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="paragraph-background-gdk"
+                version="2.8"
+                writable="1"
+                doc="The paragraph background color as a as a (possibly unallocated)
+#GdkColor.">
+        <type name="Gdk.Color" c:type="GdkColor"/>
+      </property>
+      <property name="paragraph-background-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="pixels-above-lines" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="pixels-above-lines-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="pixels-below-lines" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="pixels-below-lines-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="pixels-inside-wrap" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="pixels-inside-wrap-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="right-margin" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="right-margin-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="rise" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="rise-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="scale" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="scale-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="size" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="size-points" writable="1">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="size-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="stretch" writable="1">
+        <type name="Pango.Stretch" c:type="PangoStretch"/>
+      </property>
+      <property name="stretch-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="strikethrough" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="strikethrough-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="style" writable="1">
+        <type name="Pango.Style" c:type="PangoStyle"/>
+      </property>
+      <property name="style-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="tabs" writable="1">
+        <type name="Pango.TabArray" c:type="PangoTabArray"/>
+      </property>
+      <property name="tabs-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="underline" writable="1">
+        <type name="Pango.Underline" c:type="PangoUnderline"/>
+      </property>
+      <property name="underline-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="variant" writable="1">
+        <type name="Pango.Variant" c:type="PangoVariant"/>
+      </property>
+      <property name="variant-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="weight" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="weight-set" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="wrap-mode" writable="1">
+        <type name="WrapMode" c:type="GtkWrapMode"/>
+      </property>
+      <property name="wrap-mode-set" writable="1">
+        <type name="boolean" c:type="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="int" c:type="int"/>
+      </field>
+      <field name="values">
+        <type name="TextAttributes" c:type="GtkTextAttributes*"/>
+      </field>
+      <field name="bg_color_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="bg_stipple_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="fg_color_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scale_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="fg_stipple_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="justification_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="left_margin_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="indent_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="rise_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="strikethrough_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="right_margin_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="pixels_above_lines_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="pixels_below_lines_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="pixels_inside_wrap_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="tabs_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="underline_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="wrap_mode_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="bg_full_height_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="invisible_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="editable_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="language_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="pg_bg_color_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="accumulative_margin" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="pad1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="event"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <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="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>
+      </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" c:type="event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="TextTagTable"
+           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="Creates a new #GtkTextTagTable. The table contains no tags by
+default.">
+        <return-value transfer-ownership="full">
+          <type name="TextTagTable" c:type="GtkTextTagTable*"/>
+        </return-value>
+      </constructor>
+      <method name="add"
+              c:identifier="gtk_text_tag_table_add"
+              doc="Add a tag to the table. The tag is assigned the highest priority
+in the table.
+the same name as an already-added tag.">
+        <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>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="gtk_text_tag_table_remove"
+              doc="Remove a tag from the table. This will remove the table&apos;s
+reference to the tag, so be careful - the tag will end
+up destroyed if you don&apos;t have a reference to it.">
+        <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>
+        </parameters>
+      </method>
+      <method name="lookup"
+              c:identifier="gtk_text_tag_table_lookup"
+              doc="Look up a named tag.">
+        <return-value transfer-ownership="none"
+                      doc="The tag, or %NULL if none by that name is in the table.">
+          <type name="TextTag" c:type="GtkTextTag*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach"
+              c:identifier="gtk_text_tag_table_foreach"
+              doc="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&apos;t add/remove tags).">
+        <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="TextTagTableForeach" c:type="GtkTextTagTableForeach"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size"
+              c:identifier="gtk_text_tag_table_get_size"
+              doc="Returns the size of the table (number of tags)">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="hash">
+        <type name="GLib.HashTable" c:type="GHashTable*"/>
+      </field>
+      <field name="anonymous">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="anon_count">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="buffers">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <glib:signal name="tag-added">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="TextTag" c:type="GtkTextTag"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="tag-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="TextTag" c:type="GtkTextTag"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="tag-removed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="TextTag" c:type="GtkTextTag"/>
+          </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" c:type="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="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="tag_added">
+        <callback name="tag_added" c:type="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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <class name="TextView"
+           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"/>
+      <constructor name="new"
+                   c:identifier="gtk_text_view_new"
+                   doc="Creates a new #GtkTextView. If you don&apos;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().">
+        <return-value transfer-ownership="full">
+          <type name="TextView" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_buffer"
+                   c:identifier="gtk_text_view_new_with_buffer"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="TextView" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <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="set_buffer"
+              c:identifier="gtk_text_view_set_buffer"
+              doc="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 &quot;adopt&quot; it.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkTextBuffer">
+            <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_buffer"
+              c:identifier="gtk_text_view_get_buffer"
+              doc="Returns the #GtkTextBuffer being displayed by this text view.
+The reference count on the buffer is not incremented; the caller
+of this function won&apos;t own a new reference.">
+        <return-value transfer-ownership="none" doc="a #GtkTextBuffer">
+          <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+        </return-value>
+      </method>
+      <method name="scroll_to_iter"
+              c:identifier="gtk_text_view_scroll_to_iter"
+              doc="just get the mark onscreen)
+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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="within_margin" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="use_align" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="xalign" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scroll_to_mark"
+              c:identifier="gtk_text_view_scroll_to_mark"
+              doc="get the mark onscreen)
+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">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mark" transfer-ownership="none">
+            <type name="TextMark" c:type="GtkTextMark*"/>
+          </parameter>
+          <parameter name="within_margin" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="use_align" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="xalign" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="yalign" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scroll_mark_onscreen"
+              c:identifier="gtk_text_view_scroll_mark_onscreen"
+              doc="Scrolls @text_view the minimum distance such that @mark is contained
+within the visible area of the widget.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mark" transfer-ownership="none">
+            <type name="TextMark" c:type="GtkTextMark*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_mark_onscreen"
+              c:identifier="gtk_text_view_move_mark_onscreen"
+              doc="Moves a mark within the buffer so that it&apos;s
+located within the currently-visible text area.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="mark" transfer-ownership="none">
+            <type name="TextMark" c:type="GtkTextMark*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="place_cursor_onscreen"
+              c:identifier="gtk_text_view_place_cursor_onscreen"
+              doc="Moves the cursor to the currently visible region of the
+buffer, it it isn&apos;t there already.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_visible_rect"
+              c:identifier="gtk_text_view_get_visible_rect"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible_rect" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_visible"
+              c:identifier="gtk_text_view_set_cursor_visible"
+              doc="Toggles whether the insertion point is displayed. A buffer with no editable
+text probably shouldn&apos;t have a visible cursor, so you may want to turn
+the cursor off.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cursor_visible"
+              c:identifier="gtk_text_view_get_cursor_visible"
+              doc="Find out whether the cursor is being displayed.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_iter_location"
+              c:identifier="gtk_text_view_get_iter_location"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="location" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_at_location"
+              c:identifier="gtk_text_view_get_iter_at_location"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </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>
+        </parameters>
+      </method>
+      <method name="get_iter_at_position"
+              c:identifier="gtk_text_view_get_iter_at_position"
+              doc="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.
+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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="trailing" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </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>
+        </parameters>
+      </method>
+      <method name="get_line_yrange"
+              c:identifier="gtk_text_view_get_line_yrange"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="y" 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>
+      </method>
+      <method name="get_line_at_y"
+              c:identifier="gtk_text_view_get_line_at_y"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="target_iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="line_top" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="buffer_to_window_coords"
+              c:identifier="gtk_text_view_buffer_to_window_coords"
+              doc="Converts coordinate (@buffer_x, @buffer_y) to coordinates for the window
+Note that you can&apos;t convert coordinates for a nonexisting window (see
+gtk_text_view_set_border_window_size()).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="win" transfer-ownership="none">
+            <type name="TextWindowType" c:type="GtkTextWindowType"/>
+          </parameter>
+          <parameter name="buffer_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="buffer_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="window_x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="window_y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="window_to_buffer_coords"
+              c:identifier="gtk_text_view_window_to_buffer_coords"
+              doc="Converts coordinates on the window identified by @win to buffer
+coordinates, storing the result in (@buffer_x,@buffer_y).
+Note that you can&apos;t convert coordinates for a nonexisting window (see
+gtk_text_view_set_border_window_size()).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="win" transfer-ownership="none">
+            <type name="TextWindowType" c:type="GtkTextWindowType"/>
+          </parameter>
+          <parameter name="window_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="window_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="buffer_x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="buffer_y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_window"
+              c:identifier="gtk_text_view_get_window"
+              doc="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.">
+        <return-value transfer-ownership="none" doc="a #GdkWindow, or %NULL">
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+        <parameters>
+          <parameter name="win" transfer-ownership="none">
+            <type name="TextWindowType" c:type="GtkTextWindowType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_window_type"
+              c:identifier="gtk_text_view_get_window_type"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="TextWindowType" c:type="GtkTextWindowType"/>
+        </return-value>
+        <parameters>
+          <parameter name="window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_border_window_size"
+              c:identifier="gtk_text_view_set_border_window_size"
+              doc="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 &quot;border windows,&quot; it doesn&apos;t work
+with #GTK_TEXT_WINDOW_WIDGET, #GTK_TEXT_WINDOW_TEXT, or
+#GTK_TEXT_WINDOW_PRIVATE.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="TextWindowType" c:type="GtkTextWindowType"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_border_window_size"
+              c:identifier="gtk_text_view_get_border_window_size"
+              doc="Gets the width of the specified border window. See
+gtk_text_view_set_border_window_size().">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="TextWindowType" c:type="GtkTextWindowType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="forward_display_line"
+              c:identifier="gtk_text_view_forward_display_line"
+              doc="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&apos;s width; paragraphs are the same in all
+views, since they depend on the contents of the #GtkTextBuffer.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="backward_display_line"
+              c:identifier="gtk_text_view_backward_display_line"
+              doc="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&apos;s width; paragraphs are the same in all
+views, since they depend on the contents of the #GtkTextBuffer.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <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="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&apos;s width; paragraphs are the same in all
+views, since they depend on the contents of the #GtkTextBuffer.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <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="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&apos;s width; paragraphs are the same in all
+views, since they depend on the contents of the #GtkTextBuffer.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="starts_display_line"
+              c:identifier="gtk_text_view_starts_display_line"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_visually"
+              c:identifier="gtk_text_view_move_visually"
+              doc="positive moves right)
+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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TextIter" c:type="GtkTextIter*"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_child_at_anchor"
+              c:identifier="gtk_text_view_add_child_at_anchor"
+              doc="Adds a child widget in the text buffer, at the given @anchor.">
+        <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="anchor" transfer-ownership="none">
+            <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="Adds a child at fixed coordinates in one of the text widget&apos;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&apos;ll need to compute the child&apos;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&apos;s position. Unfortunately there&apos;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.">
+        <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="which_window" transfer-ownership="none">
+            <type name="TextWindowType" c:type="GtkTextWindowType"/>
+          </parameter>
+          <parameter name="xpos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="ypos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_child"
+              c:identifier="gtk_text_view_move_child"
+              doc="Updates the position of a child, as for gtk_text_view_add_child_in_window().">
+        <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="xpos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="ypos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_wrap_mode"
+              c:identifier="gtk_text_view_set_wrap_mode"
+              doc="Sets the line wrapping for the view.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrap_mode" transfer-ownership="none">
+            <type name="WrapMode" c:type="GtkWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_wrap_mode"
+              c:identifier="gtk_text_view_get_wrap_mode"
+              doc="Gets the line wrapping for the view.">
+        <return-value transfer-ownership="full">
+          <type name="WrapMode" c:type="GtkWrapMode"/>
+        </return-value>
+      </method>
+      <method name="set_editable"
+              c:identifier="gtk_text_view_set_editable"
+              doc="Sets the default editability of the #GtkTextView. You can override
+this default setting with tags in the buffer, using the &quot;editable&quot;
+attribute of tags.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_editable"
+              c:identifier="gtk_text_view_get_editable"
+              doc="Returns the default editability of the #GtkTextView. Tags in the
+buffer may override this setting for some ranges of text.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_overwrite"
+              c:identifier="gtk_text_view_set_overwrite"
+              doc="Changes the #GtkTextView overwrite mode."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="overwrite" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_overwrite"
+              c:identifier="gtk_text_view_get_overwrite"
+              doc="Returns whether the #GtkTextView is in overwrite mode or not."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_accepts_tab"
+              c:identifier="gtk_text_view_set_accepts_tab"
+              doc="character, %FALSE, if pressing the Tab key should move the
+keyboard focus.
+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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="accepts_tab" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_accepts_tab"
+              c:identifier="gtk_text_view_get_accepts_tab"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_pixels_above_lines"
+              c:identifier="gtk_text_view_set_pixels_above_lines"
+              doc="Sets the default number of blank pixels above paragraphs in @text_view.
+Tags in the buffer for @text_view may override the defaults.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixels_above_lines" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixels_above_lines"
+              c:identifier="gtk_text_view_get_pixels_above_lines"
+              doc="Gets the default number of pixels to put above paragraphs.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_pixels_below_lines"
+              c:identifier="gtk_text_view_set_pixels_below_lines"
+              doc="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&apos;s buffer.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixels_below_lines" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixels_below_lines"
+              c:identifier="gtk_text_view_get_pixels_below_lines"
+              doc="Gets the value set by gtk_text_view_set_pixels_below_lines().">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_pixels_inside_wrap"
+              c:identifier="gtk_text_view_set_pixels_inside_wrap"
+              doc="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&apos;s buffer.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixels_inside_wrap" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixels_inside_wrap"
+              c:identifier="gtk_text_view_get_pixels_inside_wrap"
+              doc="Gets the value set by gtk_text_view_set_pixels_inside_wrap().">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_justification"
+              c:identifier="gtk_text_view_set_justification"
+              doc="Sets the default justification of text in @text_view.
+Tags in the view&apos;s buffer may override the default.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="justification" transfer-ownership="none">
+            <type name="Justification" c:type="GtkJustification"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_justification"
+              c:identifier="gtk_text_view_get_justification"
+              doc="Gets the default justification of paragraphs in @text_view.
+Tags in the buffer may override the default.">
+        <return-value transfer-ownership="full">
+          <type name="Justification" c:type="GtkJustification"/>
+        </return-value>
+      </method>
+      <method name="set_left_margin"
+              c:identifier="gtk_text_view_set_left_margin"
+              doc="Sets the default left margin for text in @text_view.
+Tags in the buffer may override the default.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="left_margin" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_left_margin"
+              c:identifier="gtk_text_view_get_left_margin"
+              doc="Gets the default left margin size of paragraphs in the @text_view.
+Tags in the buffer may override the default.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_right_margin"
+              c:identifier="gtk_text_view_set_right_margin"
+              doc="Sets the default right margin for text in the text view.
+Tags in the buffer may override the default.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="right_margin" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_right_margin"
+              c:identifier="gtk_text_view_get_right_margin"
+              doc="Gets the default right margin for text in @text_view. Tags
+in the buffer may override the default.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_indent"
+              c:identifier="gtk_text_view_set_indent"
+              doc="Sets the default indentation for paragraphs in @text_view.
+Tags in the buffer may override the default.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="indent" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_indent"
+              c:identifier="gtk_text_view_get_indent"
+              doc="Gets the default indentation of paragraphs in @text_view.
+Tags in the view&apos;s buffer may override the default.
+The indentation may be negative.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_tabs"
+              c:identifier="gtk_text_view_set_tabs"
+              doc="Sets the default tab stops for paragraphs in @text_view.
+Tags in the buffer may override the default.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tabs" transfer-ownership="none">
+            <type name="Pango.TabArray" c:type="PangoTabArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tabs"
+              c:identifier="gtk_text_view_get_tabs"
+              doc="Gets the default tabs for @text_view. Tags in the buffer may
+override the defaults. The returned array will be %NULL if
+&quot;standard&quot; (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().">
+        <return-value transfer-ownership="full">
+          <type name="Pango.TabArray" c:type="PangoTabArray*"/>
+        </return-value>
+      </method>
+      <method name="get_default_attributes"
+              c:identifier="gtk_text_view_get_default_attributes"
+              doc="Obtains a copy of the default text attributes. These are the
+attributes used for text unless a tag overrides them.
+You&apos;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.">
+        <return-value transfer-ownership="full">
+          <type name="TextAttributes" c:type="GtkTextAttributes*"/>
+        </return-value>
+      </method>
+      <property name="accepts-tab" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="buffer" writable="1">
+        <type name="TextBuffer" c:type="GtkTextBuffer"/>
+      </property>
+      <property name="cursor-visible" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="editable" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="im-module"
+                version="2.16"
+                writable="1"
+                doc="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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="indent" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="justification" writable="1">
+        <type name="Justification" c:type="GtkJustification"/>
+      </property>
+      <property name="left-margin" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="overwrite" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="pixels-above-lines" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="pixels-below-lines" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="pixels-inside-wrap" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="right-margin" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="tabs" writable="1">
+        <type name="Pango.TabArray" c:type="PangoTabArray"/>
+      </property>
+      <property name="wrap-mode" writable="1">
+        <type name="WrapMode" c:type="GtkWrapMode"/>
+      </property>
+      <field name="parent_instance">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="layout">
+        <type name="any" c:type="any*"/>
+      </field>
+      <field name="buffer">
+        <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+      </field>
+      <field name="selection_drag_handler">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="scroll_timeout">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="pixels_above_lines">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="pixels_below_lines">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="pixels_inside_wrap">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="wrap_mode">
+        <type name="WrapMode" c:type="GtkWrapMode"/>
+      </field>
+      <field name="justify">
+        <type name="Justification" c:type="GtkJustification"/>
+      </field>
+      <field name="left_margin">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="right_margin">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="indent">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="tabs">
+        <type name="Pango.TabArray" c:type="PangoTabArray*"/>
+      </field>
+      <field name="editable" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="overwrite_mode" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="cursor_visible" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="need_im_reset" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="accepts_tab" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="width_changed" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="onscreen_validated" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="mouse_cursor_obscured" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="text_window">
+        <type name="TextWindow" c:type="GtkTextWindow*"/>
+      </field>
+      <field name="left_window">
+        <type name="TextWindow" c:type="GtkTextWindow*"/>
+      </field>
+      <field name="right_window">
+        <type name="TextWindow" c:type="GtkTextWindow*"/>
+      </field>
+      <field name="top_window">
+        <type name="TextWindow" c:type="GtkTextWindow*"/>
+      </field>
+      <field name="bottom_window">
+        <type name="TextWindow" c:type="GtkTextWindow*"/>
+      </field>
+      <field name="hadjustment">
+        <type name="Adjustment" c:type="GtkAdjustment*"/>
+      </field>
+      <field name="vadjustment">
+        <type name="Adjustment" c:type="GtkAdjustment*"/>
+      </field>
+      <field name="xoffset">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="yoffset">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="width">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="height">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="virtual_cursor_x">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="virtual_cursor_y">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="first_para_mark">
+        <type name="TextMark" c:type="GtkTextMark*"/>
+      </field>
+      <field name="first_para_pixels">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="dnd_mark">
+        <type name="TextMark" c:type="GtkTextMark*"/>
+      </field>
+      <field name="blink_timeout">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="first_validate_idle">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="incremental_validate_idle">
+        <type name="uint" c:type="guint"/>
+      </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="drag_start_x">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="drag_start_y">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="children">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="pending_scroll">
+        <type name="TextPendingScroll" c:type="GtkTextPendingScroll*"/>
+      </field>
+      <field name="pending_place_cursor_button">
+        <type name="int" c:type="gint"/>
+      </field>
+      <glib:signal name="backspace"
+                   doc="The ::backspace signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="copy-clipboard"
+                   doc="The ::copy-clipboard signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cut-clipboard"
+                   doc="The ::cut-clipboard signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="delete-from-cursor"
+                   doc="The ::delete-from-cursor signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="DeleteType" c:type="GtkDeleteType"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="insert-at-cursor"
+                   doc="The ::insert-at-cursor signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="string" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-cursor"
+                   doc="The ::move-cursor signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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;">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="step" transfer-ownership="none">
+            <type name="MovementStep" c:type="GtkMovementStep"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="extend_selection" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-viewport"
+                   doc="The ::move-viewport signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="step" transfer-ownership="none">
+            <type name="ScrollStep" c:type="GtkScrollStep"/>
+          </parameter>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="page-horizontally"
+                   doc="The ::page-horizontally signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&gt;keybinding signal&lt;/link&gt;
+which can be bound to key combinations to allow the user
+to initiate horizontal cursor movement by pages.
+This signal should not be used anymore, instead use the
+#GtkTextview::move-cursor signal with the #GTK_MOVEMENT_HORIZONTAL_PAGES
+granularity.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="count" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="extend_selection" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="paste-clipboard"
+                   doc="The ::paste-clipboard signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="populate-popup"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="menu" transfer-ownership="none">
+            <type name="Menu" c:type="GtkMenu"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="preedit-changed"
+                   doc="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."
+                   version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="preedit" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="select-all"
+                   doc="The ::select-all signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="select" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="set-anchor"
+                   doc="The ::set-anchor signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user initiates setting the &quot;anchor&quot;
+mark. The &quot;anchor&quot; mark gets placed at the same position as the
+&quot;insert&quot; mark.
+This signal has no default bindings.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="set-scroll-adjustments">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Adjustment" c:type="GtkAdjustment"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="Adjustment" c:type="GtkAdjustment"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="toggle-cursor-visible"
+                   doc="The ::toggle-cursor-visible signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&gt;keybinding signal&lt;/link&gt;
+which gets emitted to toggle the visibility of the cursor.
+The default binding for this signal is F7.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="toggle-overwrite"
+                   doc="The ::toggle-overwrite signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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"
+                  c:type="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" c:type="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" c:type="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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="extend_selection" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="page_horizontally">
+        <callback name="page_horizontally" c:type="page_horizontally">
+          <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="count" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="extend_selection" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_anchor">
+        <callback name="set_anchor" c:type="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" c:type="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" c:type="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="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="backspace">
+        <callback name="backspace" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved5">
+        <callback name="gtk_reserved5" c:type="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved6">
+        <callback name="gtk_reserved6" c:type="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved7">
+        <callback name="gtk_reserved7" c:type="_gtk_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="TextWindow" c:type="GtkTextWindow">
+    </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">
+    </record>
+    <class name="TipsQuery"
+           c:type="GtkTipsQuery"
+           parent="Label"
+           glib:type-name="GtkTipsQuery"
+           glib:get-type="gtk_tips_query_get_type"
+           glib:type-struct="TipsQueryClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_tips_query_new">
+        <return-value transfer-ownership="full">
+          <type name="TipsQuery" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="start_query" c:identifier="gtk_tips_query_start_query">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stop_query" c:identifier="gtk_tips_query_stop_query">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_caller" c:identifier="gtk_tips_query_set_caller">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="caller" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_labels" c:identifier="gtk_tips_query_set_labels">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label_inactive" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="label_no_tip" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="caller" writable="1">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <property name="emit-always" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="label-inactive" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="label-no-tip" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <field name="label">
+        <type name="Label" c:type="GtkLabel"/>
+      </field>
+      <field name="emit_always" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="in_query" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="label_inactive">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="label_no_tip">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="caller">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="last_crossed">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="query_cursor">
+        <type name="Gdk.Cursor" c:type="GdkCursor*"/>
+      </field>
+      <glib:signal name="start-query">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="stop-query">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="widget-entered">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="widget-selected">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="p2" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="TipsQueryClass"
+            c:type="GtkTipsQueryClass"
+            glib:is-gtype-struct-for="TipsQuery">
+      <field name="parent_class">
+        <type name="LabelClass" c:type="GtkLabelClass"/>
+      </field>
+      <field name="start_query">
+        <callback name="start_query" c:type="start_query">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tips_query" transfer-ownership="none">
+              <type name="TipsQuery" c:type="GtkTipsQuery*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="stop_query">
+        <callback name="stop_query" c:type="stop_query">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tips_query" transfer-ownership="none">
+              <type name="TipsQuery" c:type="GtkTipsQuery*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="widget_entered">
+        <callback name="widget_entered" c:type="widget_entered">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="tips_query" transfer-ownership="none">
+              <type name="TipsQuery" c:type="GtkTipsQuery*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="tip_text" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="tip_private" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="widget_selected">
+        <callback name="widget_selected" c:type="widget_selected">
+          <return-value transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </return-value>
+          <parameters>
+            <parameter name="tips_query" transfer-ownership="none">
+              <type name="TipsQuery" c:type="GtkTipsQuery*"/>
+            </parameter>
+            <parameter name="widget" transfer-ownership="none">
+              <type name="Widget" c:type="GtkWidget*"/>
+            </parameter>
+            <parameter name="tip_text" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="tip_private" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="event" transfer-ownership="none">
+              <type name="Gdk.EventButton" c:type="GdkEventButton*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="ToggleAction"
+           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"
+                   doc="action, or %NULL
+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()."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ToggleAction" c:type="GtkToggleAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="label"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The label displayed in menu items and on buttons, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tooltip"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A tooltip for the action, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="toggled"
+              c:identifier="gtk_toggle_action_toggled"
+              doc="Emits the &quot;toggled&quot; signal on the toggle action."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_active"
+              c:identifier="gtk_toggle_action_set_active"
+              doc="Sets the checked state on the toggle action."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_active"
+              c:identifier="gtk_toggle_action_get_active"
+              doc="Returns the checked state of the toggle action."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_draw_as_radio"
+              c:identifier="gtk_toggle_action_set_draw_as_radio"
+              doc="action
+Sets whether the action should have proxies like a radio action."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="draw_as_radio" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_draw_as_radio"
+              c:identifier="gtk_toggle_action_get_draw_as_radio"
+              doc="Returns whether the action should have proxies like a radio action."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="active"
+                version="2.10"
+                writable="1"
+                doc="If the toggle action should be active in or not.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="draw-as-radio"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="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">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ToggleActionEntry" c:type="GtkToggleActionEntry">
+      <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="boolean" c:type="gboolean"/>
+      </field>
+    </record>
+    <record name="ToggleActionPrivate" c:type="GtkToggleActionPrivate">
+    </record>
+    <class name="ToggleButton"
+           c:type="GtkToggleButton"
+           parent="Button"
+           glib:type-name="GtkToggleButton"
+           glib:get-type="gtk_toggle_button_get_type"
+           glib:type-struct="ToggleButtonClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new" c:identifier="gtk_toggle_button_new">
+        <return-value transfer-ownership="full">
+          <type name="ToggleButton" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_label"
+                   c:identifier="gtk_toggle_button_new_with_label">
+        <return-value transfer-ownership="full">
+          <type name="ToggleButton" 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="mnemonic character
+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.">
+        <return-value transfer-ownership="full">
+          <type name="ToggleButton" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_mode"
+              c:identifier="gtk_toggle_button_set_mode"
+              doc="and label; if %FALSE, draw the button like a normal button
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="draw_indicator" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mode"
+              c:identifier="gtk_toggle_button_get_mode"
+              doc="Retrieves whether the button is displayed as a separate indicator
+and label. See gtk_toggle_button_set_mode().
+and label.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_active" c:identifier="gtk_toggle_button_get_active">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="toggled" c:identifier="gtk_toggle_button_toggled">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_inconsistent"
+              c:identifier="gtk_toggle_button_set_inconsistent"
+              doc="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 &quot;in between&quot; state. This function turns on
+&quot;in between&quot; 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&apos;t affect the semantics of the button.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_inconsistent"
+              c:identifier="gtk_toggle_button_get_inconsistent"
+              doc="Gets the value set by gtk_toggle_button_set_inconsistent().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="active" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="draw-indicator" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="inconsistent" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="button">
+        <type name="Button" c:type="GtkButton"/>
+      </field>
+      <field name="active" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="draw_indicator" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="inconsistent" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="toggled">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="ToggleToolButton"
+           c:type="GtkToggleToolButton"
+           parent="ToolButton"
+           glib:type-name="GtkToggleToolButton"
+           glib:get-type="gtk_toggle_tool_button_get_type"
+           glib:type-struct="ToggleToolButtonClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_toggle_tool_button_new"
+                   doc="Returns a new #GtkToggleToolButton"
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ToggleToolButton" c:type="GtkToolItem*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_stock"
+                   c:identifier="gtk_toggle_tool_button_new_from_stock"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ToggleToolButton" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_active"
+              c:identifier="gtk_toggle_tool_button_set_active"
+              doc="Sets the status of the toggle tool button. Set to %TRUE if you
+want the GtkToggleButton to be &apos;pressed in&apos;, and %FALSE to raise it.
+This action causes the toggled signal to be emitted."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_active" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_active"
+              c:identifier="gtk_toggle_tool_button_get_active"
+              doc="Queries a #GtkToggleToolButton and returns its current state.
+Returns %TRUE if the toggle button is pressed in and %FALSE if it is raised."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <property name="active"
+                version="2.8"
+                writable="1"
+                doc="If the toggle tool button should be pressed in or not.">
+        <type name="boolean" c:type="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="Emitted whenever the toggle tool button changes state.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ToggleToolButtonPrivate" c:type="GtkToggleToolButtonPrivate">
+    </record>
+    <class name="ToolButton"
+           c:type="GtkToolButton"
+           parent="ToolItem"
+           glib:type-name="GtkToolButton"
+           glib:get-type="gtk_tool_button_get_type"
+           glib:type-struct="ToolButtonClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_tool_button_new"
+                   doc="Creates a new %GtkToolButton using @icon_widget as icon and @label as
+label."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ToolButton" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_widget"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkMisc widget that will be used as icon widget, or %NULL">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="label"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a string that will be used as label, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_stock"
+                   c:identifier="gtk_tool_button_new_from_stock"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ToolButton" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_label"
+              c:identifier="gtk_tool_button_set_label"
+              doc="Sets @label as the label used for the tool button. The &quot;label&quot; property
+only has an effect if not overridden by a non-%NULL &quot;label_widget&quot; property.
+If both the &quot;label_widget&quot; and &quot;label&quot; properties are %NULL, the label
+is determined by the &quot;stock_id&quot; property. If the &quot;stock_id&quot; property is also
+%NULL, @button will not have a label."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a string that will be used as label, or %NULL.">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_label"
+              c:identifier="gtk_tool_button_get_label"
+              doc="Returns the label used by the tool button, or %NULL if the tool button
+doesn&apos;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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_use_underline"
+              c:identifier="gtk_tool_button_set_use_underline"
+              doc="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 &quot;_Open&quot; and @use_underline is %TRUE,
+the label on the tool button will be &quot;Open&quot; and the item on the overflow
+menu will have an underlined &apos;O&apos;.
+Labels shown on tool buttons never have mnemonics on them; this property
+only affects the menu item on the overflow menu."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_underline" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_underline"
+              c:identifier="gtk_tool_button_get_use_underline"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_stock_id"
+              c:identifier="gtk_tool_button_set_stock_id"
+              doc="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 &quot;label&quot; and &quot;icon_widget&quot; properties."
+              version="2.4">
+        <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="a name of a stock item, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_stock_id"
+              c:identifier="gtk_tool_button_get_stock_id"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </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="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="set_icon_widget"
+              c:identifier="gtk_tool_button_set_icon_widget"
+              doc="Sets @icon as the widget used as icon on @button. If @icon_widget is
+%NULL the icon is determined by the &quot;stock_id&quot; property. If the
+&quot;stock_id&quot; property is also %NULL, @button will not have an icon."
+              version="2.4">
+        <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="the widget used as icon, or %NULL">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon_widget"
+              c:identifier="gtk_tool_button_get_icon_widget"
+              doc="Return the widget used as icon widget on @button. See
+gtk_tool_button_set_icon_widget()."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_label_widget"
+              c:identifier="gtk_tool_button_set_label_widget"
+              doc="Sets @label_widget as the widget that will be used as the label
+for @button. If @label_widget is %NULL the &quot;label&quot; property is used
+as label. If &quot;label&quot; is also %NULL, the label in the stock item
+determined by the &quot;stock_id&quot; property is used as label. If
+&quot;stock_id&quot; is also %NULL, @button does not have a label."
+              version="2.4">
+        <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="the widget used as label, or %NULL">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_label_widget"
+              c:identifier="gtk_tool_button_get_label_widget"
+              doc="Returns the widget used as label on @button. See
+gtk_tool_button_set_label_widget()."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <property name="icon-name"
+                version="2.8"
+                writable="1"
+                doc="The name of the themed icon displayed on the item.
+This property only has an effect if not overridden by &quot;label&quot;,
+&quot;icon_widget&quot; or &quot;stock_id&quot; properties.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="icon-widget" writable="1">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <property name="label" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="label-widget" writable="1">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <property name="stock-id" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="use-underline" writable="1">
+        <type name="boolean" c:type="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="This signal is emitted when the tool button is clicked with the mouse
+or activated with the keyboard.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ToolButtonPrivate" c:type="GtkToolButtonPrivate">
+    </record>
+    <class name="ToolItem"
+           c:type="GtkToolItem"
+           doc="The GtkToolItem struct contains only private data.
+It should only be accessed through the functions described below."
+           parent="Bin"
+           glib:type-name="GtkToolItem"
+           glib:get-type="gtk_tool_item_get_type"
+           glib:type-struct="ToolItemClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <constructor name="new"
+                   c:identifier="gtk_tool_item_new"
+                   doc="Creates a new #GtkToolItem"
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+      </constructor>
+      <method name="set_homogeneous"
+              c:identifier="gtk_tool_item_set_homogeneous"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_homogeneous"
+              c:identifier="gtk_tool_item_get_homogeneous"
+              doc="Returns whether @tool_item is the same size as other homogeneous
+items. See gtk_tool_item_set_homogeneous().
+items."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_expand"
+              c:identifier="gtk_tool_item_set_expand"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_expand"
+              c:identifier="gtk_tool_item_get_expand"
+              doc="Returns whether @tool_item is allocated extra space.
+See gtk_tool_item_set_expand()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_tooltip"
+              c:identifier="gtk_tool_item_set_tooltip"
+              doc="Sets the #GtkTooltips object to be used for @tool_item, the
+text to be displayed as tooltip on the item and the private text
+to be used. See gtk_tooltips_set_tip()."
+              version="2.4"
+              deprecated="Use gtk_tool_item_set_tooltip_text() instead."
+              deprecated-version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tooltips" transfer-ownership="none">
+            <type name="Tooltips" c:type="GtkTooltips*"/>
+          </parameter>
+          <parameter name="tip_text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="text to be used as tooltip text for @tool_item">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tip_private"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="text to be used as private tooltip text">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_text"
+              c:identifier="gtk_tool_item_set_tooltip_text"
+              doc="Sets the text to be displayed as tooltip on the item.
+See gtk_widget_set_tooltip_text()."
+              version="2.12">
+        <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>
+        </parameters>
+      </method>
+      <method name="set_tooltip_markup"
+              c:identifier="gtk_tool_item_set_tooltip_markup"
+              doc="Sets the markup text to be displayed as tooltip on the item.
+See gtk_widget_set_tooltip_markup()."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_use_drag_window"
+              c:identifier="gtk_tool_item_set_use_drag_window"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="use_drag_window" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_use_drag_window"
+              c:identifier="gtk_tool_item_get_use_drag_window"
+              doc="Returns whether @tool_item has a drag window. See
+gtk_tool_item_set_use_drag_window()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_visible_horizontal"
+              c:identifier="gtk_tool_item_set_visible_horizontal"
+              doc="Sets whether @tool_item is visible when the toolbar is docked horizontally."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible_horizontal" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible_horizontal"
+              c:identifier="gtk_tool_item_get_visible_horizontal"
+              doc="Returns whether the @tool_item is visible on toolbars that are
+docked horizontally.
+docked horizontally."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_visible_vertical"
+              c:identifier="gtk_tool_item_set_visible_vertical"
+              doc="is in vertical mode
+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"
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible_vertical" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible_vertical"
+              c:identifier="gtk_tool_item_get_visible_vertical"
+              doc="Returns whether @tool_item is visible when the toolbar is docked vertically.
+See gtk_tool_item_set_visible_vertical()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_is_important"
+              c:identifier="gtk_tool_item_get_is_important"
+              doc="Returns whether @tool_item is considered important. See
+gtk_tool_item_set_is_important()"
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_is_important"
+              c:identifier="gtk_tool_item_set_is_important"
+              doc="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 &quot;is_important&quot; property set have labels, an
+effect known as &quot;priority text&quot;"
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_important" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ellipsize_mode"
+              c:identifier="gtk_tool_item_get_ellipsize_mode"
+              doc="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."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+        </return-value>
+      </method>
+      <method name="get_icon_size"
+              c:identifier="gtk_tool_item_get_icon_size"
+              doc="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"
+              version="2.4">
+        <return-value transfer-ownership="full"
+                      doc="a #GtkIconSize indicating the icon size">
+          <type name="int" c:type="GtkIconSize"/>
+        </return-value>
+      </method>
+      <method name="get_orientation"
+              c:identifier="gtk_tool_item_get_orientation"
+              doc="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"
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </return-value>
+      </method>
+      <method name="get_toolbar_style"
+              c:identifier="gtk_tool_item_get_toolbar_style"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+        </return-value>
+      </method>
+      <method name="get_relief_style"
+              c:identifier="gtk_tool_item_get_relief_style"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+        </return-value>
+      </method>
+      <method name="get_text_alignment"
+              c:identifier="gtk_tool_item_get_text_alignment"
+              doc="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"
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_text_orientation"
+              c:identifier="gtk_tool_item_get_text_orientation"
+              doc="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"
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </return-value>
+      </method>
+      <method name="get_text_size_group"
+              c:identifier="gtk_tool_item_get_text_size_group"
+              doc="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."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="SizeGroup" c:type="GtkSizeGroup*"/>
+        </return-value>
+      </method>
+      <method name="retrieve_proxy_menu_item"
+              c:identifier="gtk_tool_item_retrieve_proxy_menu_item"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none"
+                      doc="The #GtkMenuItem that is going to appear in the">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_proxy_menu_item"
+              c:identifier="gtk_tool_item_get_proxy_menu_item"
+              doc="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
+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."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="menu_item_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_proxy_menu_item"
+              c:identifier="gtk_tool_item_set_proxy_menu_item"
+              doc="Sets the #GtkMenuItem used in the toolbar overflow menu. The
+should also be used with gtk_tool_item_get_proxy_menu_item()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="menu_item_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="menu_item" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rebuild_menu"
+              c:identifier="gtk_tool_item_rebuild_menu"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="toolbar_reconfigured"
+              c:identifier="gtk_tool_item_toolbar_reconfigured"
+              doc="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."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="is-important" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="visible-horizontal" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="visible-vertical" writable="1">
+        <type name="boolean" c:type="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="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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="set-tooltip"
+                   doc="This signal is emitted when the toolitem&apos;s tooltip changes.
+Application developers can use gtk_tool_item_set_tooltip() to
+set the item&apos;s tooltip.
+need to use this signal anymore."
+                   deprecated="With the new tooltip API, there is no"
+                   deprecated-version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tooltips" transfer-ownership="none">
+            <type name="Tooltips" c:type="GtkTooltips"/>
+          </parameter>
+          <parameter name="tip_text" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+          <parameter name="tip_private" transfer-ownership="none">
+            <type name="utf8" c:type="gchararray"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="toolbar-reconfigured"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="create_menu_proxy">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="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="set_tooltip">
+        <callback name="set_tooltip" c:type="set_tooltip">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="tool_item" transfer-ownership="none">
+              <type name="ToolItem" c:type="GtkToolItem*"/>
+            </parameter>
+            <parameter name="tooltips" transfer-ownership="none">
+              <type name="Tooltips" c:type="GtkTooltips*"/>
+            </parameter>
+            <parameter name="tip_text" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+            <parameter name="tip_private" transfer-ownership="none">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="ToolItemGroup"
+           c:type="GtkToolItemGroup"
+           doc="This should not be accessed directly. Use the accessor functions below."
+           parent="Container"
+           glib:type-name="GtkToolItemGroup"
+           glib:get-type="gtk_tool_item_group_get_type"
+           glib:type-struct="ToolItemGroupClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="ToolShell"/>
+      <constructor name="new"
+                   c:identifier="gtk_tool_item_group_new"
+                   doc="Creates a new tool item group with label @label."
+                   version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="ToolItemGroup" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_label"
+              c:identifier="gtk_tool_item_group_set_label"
+              doc="Sets the label of the tool item group. The label is displayed in the header
+of the group."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_label_widget"
+              c:identifier="gtk_tool_item_group_set_label_widget"
+              doc="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."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label_widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_collapsed"
+              c:identifier="gtk_tool_item_group_set_collapsed"
+              doc="Sets whether the @group should be collapsed or expanded."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="collapsed" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_ellipsize"
+              c:identifier="gtk_tool_item_group_set_ellipsize"
+              doc="Sets the ellipsization mode which should be used by labels in @group."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ellipsize" transfer-ownership="none">
+            <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_header_relief"
+              c:identifier="gtk_tool_item_group_set_header_relief"
+              doc="Set the button relief of the group header.
+See gtk_button_set_relief() for details."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="style" transfer-ownership="none">
+            <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_label"
+              c:identifier="gtk_tool_item_group_get_label"
+              doc="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()"
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="get_label_widget"
+              c:identifier="gtk_tool_item_group_get_label_widget"
+              doc="Gets the label widget of @group.
+See gtk_tool_item_group_set_label_widget()."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_collapsed"
+              c:identifier="gtk_tool_item_group_get_collapsed"
+              doc="Gets whether @group is collapsed or expanded."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_ellipsize"
+              c:identifier="gtk_tool_item_group_get_ellipsize"
+              doc="Gets the ellipsization mode of @group."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+        </return-value>
+      </method>
+      <method name="get_header_relief"
+              c:identifier="gtk_tool_item_group_get_header_relief"
+              doc="Gets the relief mode of the header button of @group."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+        </return-value>
+      </method>
+      <method name="insert"
+              c:identifier="gtk_tool_item_group_insert"
+              doc="The position -1 means end of list.
+Inserts @item at @position in the list of children of @group."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <type name="ToolItem" c:type="GtkToolItem*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_item_position"
+              c:identifier="gtk_tool_item_group_set_item_position"
+              doc="be a child of @group.
+The position -1 means end of list.
+Sets the position of @item in the list of children of @group."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <type name="ToolItem" c:type="GtkToolItem*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_item_position"
+              c:identifier="gtk_tool_item_group_get_item_position"
+              doc="Gets the position of @item in @group as index."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <type name="ToolItem" c:type="GtkToolItem*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_items"
+              c:identifier="gtk_tool_item_group_get_n_items"
+              doc="Gets the number of tool items in @group."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="get_nth_item"
+              c:identifier="gtk_tool_item_group_get_nth_item"
+              doc="Gets the tool item at @index in group."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="index" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_drop_item"
+              c:identifier="gtk_tool_item_group_get_drop_item"
+              doc="Gets the tool item at position (x, y)."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </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>
+        </parameters>
+      </method>
+      <property name="collapsed" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="ellipsize" writable="1">
+        <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+      </property>
+      <property name="header-relief" writable="1">
+        <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+      </property>
+      <property name="label" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="label-widget" writable="1">
+        <type name="Widget" c:type="GtkWidget"/>
+      </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">
+    </record>
+    <record name="ToolItemPrivate" c:type="GtkToolItemPrivate">
+    </record>
+    <class name="ToolPalette"
+           c:type="GtkToolPalette"
+           doc="This should not be accessed directly. Use the accessor functions below."
+           parent="Container"
+           glib:type-name="GtkToolPalette"
+           glib:get-type="gtk_tool_palette_get_type"
+           glib:type-struct="ToolPaletteClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <constructor name="new"
+                   c:identifier="gtk_tool_palette_new"
+                   doc="Creates a new tool palette."
+                   version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="ToolPalette" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <function name="get_drag_target_item"
+                c:identifier="gtk_tool_palette_get_drag_target_item"
+                doc="Gets the target entry for a dragged #GtkToolItem."
+                version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+        </return-value>
+      </function>
+      <function name="get_drag_target_group"
+                c:identifier="gtk_tool_palette_get_drag_target_group"
+                doc="Get the target entry for a dragged #GtkToolItemGroup."
+                version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+        </return-value>
+      </function>
+      <method name="set_group_position"
+              c:identifier="gtk_tool_palette_set_group_position"
+              doc="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."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="ToolItemGroup" c:type="GtkToolItemGroup*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_exclusive"
+              c:identifier="gtk_tool_palette_set_exclusive"
+              doc="Sets whether the group should be exclusive or not.
+If an exclusive group is expanded all other groups are collapsed."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="ToolItemGroup" c:type="GtkToolItemGroup*"/>
+          </parameter>
+          <parameter name="exclusive" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_expand"
+              c:identifier="gtk_tool_palette_set_expand"
+              doc="Sets whether the group should be given extra space."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="ToolItemGroup" c:type="GtkToolItemGroup*"/>
+          </parameter>
+          <parameter name="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_group_position"
+              c:identifier="gtk_tool_palette_get_group_position"
+              doc="Gets the position of @group in @palette as index.
+See gtk_tool_palette_set_group_position()."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="ToolItemGroup" c:type="GtkToolItemGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_exclusive"
+              c:identifier="gtk_tool_palette_get_exclusive"
+              doc="Gets whether @group is exclusive or not.
+See gtk_tool_palette_set_exclusive()."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="ToolItemGroup" c:type="GtkToolItemGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_expand"
+              c:identifier="gtk_tool_palette_get_expand"
+              doc="Gets whether group should be given extra space.
+See gtk_tool_palette_set_expand()."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="group" transfer-ownership="none">
+            <type name="ToolItemGroup" c:type="GtkToolItemGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_size"
+              c:identifier="gtk_tool_palette_set_icon_size"
+              doc="palette shall have
+Sets the size of icons in the tool palette."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_size"
+                     transfer-ownership="none"
+                     doc="the #GtkIconSize that icons in the tool">
+            <type name="int" c:type="GtkIconSize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_icon_size"
+              c:identifier="gtk_tool_palette_unset_icon_size"
+              doc="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."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_style"
+              c:identifier="gtk_tool_palette_set_style"
+              doc="Sets the style (text, icons or both) of items in the tool palette."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="style" transfer-ownership="none">
+            <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_style"
+              c:identifier="gtk_tool_palette_unset_style"
+              doc="Unsets a toolbar style set with gtk_tool_palette_set_style(),
+so that user preferences will be used to determine the toolbar style."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_icon_size"
+              c:identifier="gtk_tool_palette_get_icon_size"
+              doc="Gets the size of icons in the tool palette.
+See gtk_tool_palette_set_icon_size()."
+              version="2.20">
+        <return-value transfer-ownership="full"
+                      doc="the #GtkIconSize of icons in the tool palette">
+          <type name="int" c:type="GtkIconSize"/>
+        </return-value>
+      </method>
+      <method name="get_style"
+              c:identifier="gtk_tool_palette_get_style"
+              doc="Gets the style (icons, text or both) of items in the tool palette."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+        </return-value>
+      </method>
+      <method name="get_drop_item"
+              c:identifier="gtk_tool_palette_get_drop_item"
+              doc="Gets the item at position (x, y).
+See gtk_tool_palette_get_drop_group()."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </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>
+        </parameters>
+      </method>
+      <method name="get_drop_group"
+              c:identifier="gtk_tool_palette_get_drop_group"
+              doc="Gets the group at position (x, y).
+if there is no such group"
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="ToolItemGroup" c:type="GtkToolItemGroup*"/>
+        </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>
+        </parameters>
+      </method>
+      <method name="get_drag_item"
+              c:identifier="gtk_tool_palette_get_drag_item"
+              doc="Get the dragged item from the selection.
+This could be a #GtkToolItem or a #GtkToolItemGroup."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection" transfer-ownership="none">
+            <type name="SelectionData" c:type="GtkSelectionData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_drag_source"
+              c:identifier="gtk_tool_palette_set_drag_source"
+              doc="which the widget should support
+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()."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <type name="ToolPaletteDragTargets"
+                  c:type="GtkToolPaletteDragTargets"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_drag_dest"
+              c:identifier="gtk_tool_palette_add_drag_dest"
+              doc="on that widget
+should support
+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()."
+              version="2.20">
+        <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="flags" transfer-ownership="none">
+            <type name="DestDefaults" c:type="GtkDestDefaults"/>
+          </parameter>
+          <parameter name="targets" transfer-ownership="none">
+            <type name="ToolPaletteDragTargets"
+                  c:type="GtkToolPaletteDragTargets"/>
+          </parameter>
+          <parameter name="actions" transfer-ownership="none">
+            <type name="Gdk.DragAction" c:type="GdkDragAction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_hadjustment"
+              c:identifier="gtk_tool_palette_get_hadjustment"
+              doc="Gets the horizontal adjustment of the tool palette."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_vadjustment"
+              c:identifier="gtk_tool_palette_get_vadjustment"
+              doc="Gets the vertical adjustment of the tool palette."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <property name="icon-size"
+                version="2.20"
+                writable="1"
+                doc="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.">
+        <type name="IconSize" c:type="GtkIconSize"/>
+      </property>
+      <property name="icon-size-set"
+                version="2.20"
+                writable="1"
+                doc="Is %TRUE if the #GtkToolPalette:icon-size property has been set.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="toolbar-style"
+                version="2.20"
+                writable="1"
+                doc="The style of items in the tool palette.">
+        <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+      </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"
+                   doc="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."
+                   version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </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"
+                  c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved5">
+        <callback name="gtk_reserved5" c:type="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved6">
+        <callback name="gtk_reserved6" c:type="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <bitfield name="ToolPaletteDragTargets"
+              doc="Flags used to specify the supported drag targets."
+              glib:type-name="GtkToolPaletteDragTargets"
+              glib:get-type="gtk_tool_palette_drag_targets_get_type"
+              c:type="GtkToolPaletteDragTargets">
+      <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">
+    </record>
+    <interface name="ToolShell"
+               c:type="GtkToolShell"
+               doc="Dummy structure for accessing instances of #GtkToolShellIface."
+               glib:type-name="GtkToolShell"
+               glib:get-type="gtk_tool_shell_get_type"
+               glib:type-struct="ToolShellIface">
+      <prerequisite name="Widget"/>
+      <virtual-method name="get_icon_size" invoker="get_icon_size">
+        <return-value transfer-ownership="full">
+          <type name="IconSize" c:type="GtkIconSize"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_orientation" invoker="get_orientation">
+        <return-value transfer-ownership="full">
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_style" invoker="get_style">
+        <return-value transfer-ownership="full">
+          <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_relief_style" invoker="get_relief_style">
+        <return-value transfer-ownership="full">
+          <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="rebuild_menu" invoker="rebuild_menu">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_text_orientation"
+                      invoker="get_text_orientation">
+        <return-value transfer-ownership="full">
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_text_alignment" invoker="get_text_alignment">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_ellipsize_mode" invoker="get_ellipsize_mode">
+        <return-value transfer-ownership="full">
+          <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_text_size_group" invoker="get_text_size_group">
+        <return-value transfer-ownership="full">
+          <type name="SizeGroup" c:type="GtkSizeGroup*"/>
+        </return-value>
+      </virtual-method>
+      <method name="get_icon_size"
+              c:identifier="gtk_tool_shell_get_icon_size"
+              doc="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."
+              version="2.14">
+        <return-value transfer-ownership="full"
+                      doc="the current size for icons of @shell">
+          <type name="int" c:type="GtkIconSize"/>
+        </return-value>
+      </method>
+      <method name="get_orientation"
+              c:identifier="gtk_tool_shell_get_orientation"
+              doc="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."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </return-value>
+      </method>
+      <method name="get_style"
+              c:identifier="gtk_tool_shell_get_style"
+              doc="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."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+        </return-value>
+      </method>
+      <method name="get_relief_style"
+              c:identifier="gtk_tool_shell_get_relief_style"
+              doc="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."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+        </return-value>
+      </method>
+      <method name="rebuild_menu"
+              c:identifier="gtk_tool_shell_rebuild_menu"
+              doc="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."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_text_orientation"
+              c:identifier="gtk_tool_shell_get_text_orientation"
+              doc="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."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </return-value>
+      </method>
+      <method name="get_text_alignment"
+              c:identifier="gtk_tool_shell_get_text_alignment"
+              doc="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."
+              version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="get_ellipsize_mode"
+              c:identifier="gtk_tool_shell_get_ellipsize_mode">
+        <return-value transfer-ownership="full">
+          <type name="Pango.EllipsizeMode" c:type="PangoEllipsizeMode"/>
+        </return-value>
+      </method>
+      <method name="get_text_size_group"
+              c:identifier="gtk_tool_shell_get_text_size_group"
+              doc="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."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="SizeGroup" c:type="GtkSizeGroup*"/>
+        </return-value>
+      </method>
+    </interface>
+    <record name="ToolShellIface"
+            c:type="GtkToolShellIface"
+            glib:is-gtype-struct-for="ToolShell"
+            doc="Virtual function table for the #GtkToolShell interface.">
+      <field name="g_iface">
+        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+      </field>
+      <field name="get_icon_size">
+        <callback name="get_icon_size" c:type="get_icon_size">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_orientation">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_style">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_relief_style">
+          <return-value transfer-ownership="full">
+            <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" c:type="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" c:type="get_text_orientation">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_text_alignment">
+          <return-value transfer-ownership="none">
+            <type name="float" 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" c:type="get_ellipsize_mode">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_text_size_group">
+          <return-value transfer-ownership="full">
+            <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: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="ToolShell"/>
+      <constructor name="new"
+                   c:identifier="gtk_toolbar_new"
+                   doc="Creates a new toolbar.">
+        <return-value transfer-ownership="full">
+          <type name="Toolbar" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <method name="insert"
+              c:identifier="gtk_toolbar_insert"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <type name="ToolItem" c:type="GtkToolItem*"/>
+          </parameter>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_item_index"
+              c:identifier="gtk_toolbar_get_item_index"
+              doc="Returns the position of @item on the toolbar, starting from 0.
+It is an error if @item is not a child of the toolbar."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="item" transfer-ownership="none">
+            <type name="ToolItem" c:type="GtkToolItem*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_n_items"
+              c:identifier="gtk_toolbar_get_n_items"
+              doc="Returns the number of items on the toolbar."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_nth_item"
+              c:identifier="gtk_toolbar_get_nth_item"
+              doc="Returns the @n&lt;!-- --&gt;&apos;th item on @toolbar, or %NULL if the
+toolbar does not contain an @n&lt;!-- --&gt;&apos;th item.
+isn&apos;t an @n&lt;!-- --&gt;&apos;th item."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ToolItem" c:type="GtkToolItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_show_arrow"
+              c:identifier="gtk_toolbar_get_show_arrow"
+              doc="Returns whether the toolbar has an overflow menu.
+See gtk_toolbar_set_show_arrow()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_show_arrow"
+              c:identifier="gtk_toolbar_set_show_arrow"
+              doc="Sets whether to show an overflow menu when
+items that there are not room are available through an
+overflow menu."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="show_arrow" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_style"
+              c:identifier="gtk_toolbar_get_style"
+              doc="Retrieves whether the toolbar has text, icons, or both . See
+gtk_toolbar_set_style().">
+        <return-value transfer-ownership="full">
+          <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+        </return-value>
+      </method>
+      <method name="set_style"
+              c:identifier="gtk_toolbar_set_style"
+              doc="Alters the view of @toolbar to display either icons only, text only, or both.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="style" transfer-ownership="none">
+            <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_style"
+              c:identifier="gtk_toolbar_unset_style"
+              doc="Unsets a toolbar style set with gtk_toolbar_set_style(), so that
+user preferences will be used to determine the toolbar style.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_icon_size"
+              c:identifier="gtk_toolbar_get_icon_size"
+              doc="Retrieves the icon size for the toolbar. See gtk_toolbar_set_icon_size().
+the toolbar.">
+        <return-value transfer-ownership="full"
+                      doc="the current icon size for the icons on">
+          <type name="int" c:type="GtkIconSize"/>
+        </return-value>
+      </method>
+      <method name="set_icon_size"
+              c:identifier="gtk_toolbar_set_icon_size"
+              doc="toolbar shall have.
+This function sets the size of stock icons in the toolbar. You
+can call it both before you add the icons and after they&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon_size"
+                     transfer-ownership="none"
+                     doc="The #GtkIconSize that stock icons in the">
+            <type name="int" c:type="GtkIconSize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_icon_size"
+              c:identifier="gtk_toolbar_unset_icon_size"
+              doc="Unsets toolbar icon size set with gtk_toolbar_set_icon_size(), so that
+user preferences will be used to determine the icon size.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_relief_style"
+              c:identifier="gtk_toolbar_get_relief_style"
+              doc="Returns the relief style of buttons on @toolbar. See
+gtk_button_set_relief()."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="ReliefStyle" c:type="GtkReliefStyle"/>
+        </return-value>
+      </method>
+      <method name="get_drop_index"
+              c:identifier="gtk_toolbar_get_drop_index"
+              doc="Returns the position corresponding to the indicated point on
+this function returns the position a new item should be
+inserted."
+              version="2.4">
+        <return-value transfer-ownership="none" doc="on the toolbar.">
+          <type name="int" c:type="gint"/>
+        </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>
+        </parameters>
+      </method>
+      <method name="set_drop_highlight_item"
+              c:identifier="gtk_toolbar_set_drop_highlight_item"
+              doc="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."
+              version="2.4">
+        <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="a #GtkToolItem, or %NULL to turn of highlighting">
+            <type name="ToolItem" c:type="GtkToolItem*"/>
+          </parameter>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_orientation"
+              c:identifier="gtk_toolbar_get_orientation"
+              doc="Retrieves the current orientation of the toolbar. See
+gtk_toolbar_set_orientation()."
+              deprecated="Use gtk_orientable_get_orientation() instead."
+              deprecated-version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </return-value>
+      </method>
+      <method name="set_orientation"
+              c:identifier="gtk_toolbar_set_orientation"
+              doc="Sets whether a toolbar should appear horizontally or vertically."
+              deprecated="Use gtk_orientable_set_orientation() instead."
+              deprecated-version="2.16">
+        <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>
+        </parameters>
+      </method>
+      <method name="get_tooltips"
+              c:identifier="gtk_toolbar_get_tooltips"
+              doc="Retrieves whether tooltips are enabled. See
+gtk_toolbar_set_tooltips().
+is now used instead."
+              deprecated="The toolkit-wide #GtkSettings:gtk-enable-tooltips property"
+              deprecated-version="2.14">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_tooltips"
+              c:identifier="gtk_toolbar_set_tooltips"
+              doc="Sets if the tooltips of a toolbar should be active or not.
+is now used instead."
+              deprecated="The toolkit-wide #GtkSettings:gtk-enable-tooltips property"
+              deprecated-version="2.14">
+        <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="append_item"
+              c:identifier="gtk_toolbar_append_item"
+              doc="Inserts a new item into the toolbar. You must specify the position
+in the toolbar where it will be inserted.
+arguments. Use G_CALLBACK() to cast the function to #GCallback."
+              deprecated="Use gtk_toolbar_insert() instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="tooltip_text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="tooltip_private_text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="icon" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="6">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend_item"
+              c:identifier="gtk_toolbar_prepend_item"
+              doc="Adds a new button to the beginning (top or left edges) of the given toolbar.
+arguments. Use G_CALLBACK() to cast the function to #GCallback."
+              deprecated="Use gtk_toolbar_insert() instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="tooltip_text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="tooltip_private_text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="icon" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="6">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_item"
+              c:identifier="gtk_toolbar_insert_item"
+              doc="Inserts a new item into the toolbar. You must specify the position in the
+toolbar where it will be inserted.
+arguments. Use G_CALLBACK() to cast the function to #GCallback."
+              deprecated="Use gtk_toolbar_insert() instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="tooltip_text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="tooltip_private_text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="icon" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="6">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_stock"
+              c:identifier="gtk_toolbar_insert_stock"
+              doc="-1 means at the end.
+Inserts a stock item at the specified position of the toolbar.  If
+except that underscores used to mark mnemonics are removed.
+arguments. Use G_CALLBACK() to cast the function to #GCallback."
+              deprecated="Use gtk_toolbar_insert() instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tooltip_text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="tooltip_private_text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="5">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_space"
+              c:identifier="gtk_toolbar_append_space"
+              doc="Adds a new space to the end of the toolbar."
+              deprecated="Use gtk_toolbar_insert() instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="prepend_space"
+              c:identifier="gtk_toolbar_prepend_space"
+              doc="Adds a new space to the beginning of the toolbar."
+              deprecated="Use gtk_toolbar_insert() instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="insert_space"
+              c:identifier="gtk_toolbar_insert_space"
+              doc="Inserts a new space in the toolbar at the specified position."
+              deprecated="Use gtk_toolbar_insert() instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_space"
+              c:identifier="gtk_toolbar_remove_space"
+              doc="Removes a space from the specified position."
+              deprecated="Use gtk_toolbar_insert() instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_element"
+              c:identifier="gtk_toolbar_append_element"
+              doc="Adds a new element to the end of a toolbar.
+If @type == %GTK_TOOLBAR_CHILD_WIDGET, @widget is used as the new element.
+If @type == %GTK_TOOLBAR_CHILD_RADIOBUTTON, @widget is used to determine
+the radio group for the new element. In all other cases, @widget must
+be %NULL.
+arguments. Use G_CALLBACK() to cast the function to #GCallback."
+              deprecated="Use gtk_toolbar_insert() instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="ToolbarChildType" c:type="GtkToolbarChildType"/>
+          </parameter>
+          <parameter name="widget"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkWidget, or %NULL.">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="tooltip_text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="tooltip_private_text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="icon" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="8">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend_element"
+              c:identifier="gtk_toolbar_prepend_element"
+              doc="Adds a new element to the beginning of a toolbar.
+If @type == %GTK_TOOLBAR_CHILD_WIDGET, @widget is used as the new element.
+If @type == %GTK_TOOLBAR_CHILD_RADIOBUTTON, @widget is used to determine
+the radio group for the new element. In all other cases, @widget must
+be %NULL.
+arguments. Use G_CALLBACK() to cast the function to #GCallback."
+              deprecated="Use gtk_toolbar_insert() instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="ToolbarChildType" c:type="GtkToolbarChildType"/>
+          </parameter>
+          <parameter name="widget"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkWidget, or %NULL">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="tooltip_text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="tooltip_private_text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="icon" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="8">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_element"
+              c:identifier="gtk_toolbar_insert_element"
+              doc="will be.
+Inserts a new element in the toolbar at the given position.
+If @type == %GTK_TOOLBAR_CHILD_WIDGET, @widget is used as the new element.
+If @type == %GTK_TOOLBAR_CHILD_RADIOBUTTON, @widget is used to determine
+the radio group for the new element. In all other cases, @widget must
+be %NULL.
+arguments. Use G_CALLBACK() to cast the function to #GCallback."
+              deprecated="Use gtk_toolbar_insert() instead."
+              deprecated-version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="ToolbarChildType" c:type="GtkToolbarChildType"/>
+          </parameter>
+          <parameter name="widget"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkWidget, or %NULL.">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="tooltip_text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="tooltip_private_text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="icon" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="callback"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="8">
+            <type name="GObject.Callback" c:type="GCallback"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append_widget"
+              c:identifier="gtk_toolbar_append_widget"
+              doc="Adds a widget to the end of the given toolbar."
+              deprecated="Use gtk_toolbar_insert() instead."
+              deprecated-version="2.4">
+        <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="tooltip_text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the element&apos;s tooltip.">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="tooltip_private_text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="used for context-sensitive help about this toolbar element.">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend_widget"
+              c:identifier="gtk_toolbar_prepend_widget"
+              doc="Adds a widget to the beginning of the given toolbar."
+              deprecated="Use gtk_toolbar_insert() instead."
+              deprecated-version="2.4">
+        <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="tooltip_text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the element&apos;s tooltip.">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="tooltip_private_text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="used for context-sensitive help about this toolbar element.">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_widget"
+              c:identifier="gtk_toolbar_insert_widget"
+              doc="Inserts a widget in the toolbar at the given position."
+              deprecated="Use gtk_toolbar_insert() instead."
+              deprecated-version="2.4">
+        <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="tooltip_text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the element&apos;s tooltip.">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="tooltip_private_text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="used for context-sensitive help about this toolbar element.">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="icon-size"
+                version="2.10"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="icon-size-set"
+                version="2.10"
+                writable="1"
+                doc="Is %TRUE if the icon-size property has been set.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="show-arrow" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="toolbar-style" writable="1">
+        <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+      </property>
+      <property name="tooltips"
+                version="2.8"
+                writable="1"
+                doc="If the tooltips of the toolbar should be active or not.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <field name="container">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="num_children">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="children">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="orientation">
+        <type name="Orientation" c:type="GtkOrientation"/>
+      </field>
+      <field name="style">
+        <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+      </field>
+      <field name="icon_size">
+        <type name="IconSize" c:type="GtkIconSize"/>
+      </field>
+      <field name="tooltips">
+        <type name="Tooltips" c:type="GtkTooltips*"/>
+      </field>
+      <field name="button_maxw">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="button_maxh">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="_gtk_reserved1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="_gtk_reserved2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="style_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="icon_size_set" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="focus-home-or-end"
+                   doc="A keybinding signal used internally by GTK+. This signal can&apos;t
+be used in application code">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="focus_home" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="orientation-changed"
+                   doc="Emitted when the orientation of the toolbar changes.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="orientation" transfer-ownership="none">
+            <type name="Orientation" c:type="GtkOrientation"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="popup-context-menu"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <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="button" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="style-changed"
+                   doc="Emitted when the style of the toolbar changes.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="style" transfer-ownership="none">
+            <type name="ToolbarStyle" c:type="GtkToolbarStyle"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="ToolbarChild" c:type="GtkToolbarChild">
+      <field name="type" writable="1">
+        <type name="ToolbarChildType" c:type="GtkToolbarChildType"/>
+      </field>
+      <field name="widget" writable="1">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="icon" writable="1">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="label" writable="1">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+    </record>
+    <enumeration name="ToolbarChildType"
+                 glib:type-name="GtkToolbarChildType"
+                 glib:get-type="gtk_toolbar_child_type_get_type"
+                 c:type="GtkToolbarChildType">
+      <member name="space"
+              value="0"
+              c:identifier="GTK_TOOLBAR_CHILD_SPACE"
+              glib:nick="space"/>
+      <member name="button"
+              value="1"
+              c:identifier="GTK_TOOLBAR_CHILD_BUTTON"
+              glib:nick="button"/>
+      <member name="togglebutton"
+              value="2"
+              c:identifier="GTK_TOOLBAR_CHILD_TOGGLEBUTTON"
+              glib:nick="togglebutton"/>
+      <member name="radiobutton"
+              value="3"
+              c:identifier="GTK_TOOLBAR_CHILD_RADIOBUTTON"
+              glib:nick="radiobutton"/>
+      <member name="widget"
+              value="4"
+              c:identifier="GTK_TOOLBAR_CHILD_WIDGET"
+              glib:nick="widget"/>
+    </enumeration>
+    <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" c:type="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" c:type="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" c:type="popup_context_menu">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="button_number" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="ToolbarPrivate" c:type="GtkToolbarPrivate">
+    </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: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"
+                doc="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."
+                version="2.12">
+        <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>
+      </function>
+      <method name="set_markup"
+              c:identifier="gtk_tooltip_set_markup"
+              doc="Sets the text of the tooltip to be @markup, which is marked up
+with the &lt;link
+linkend=&quot;PangoMarkupFormat&quot;&gt;Pango text markup language&lt;/link&gt;.
+If @markup is %NULL, the label will be hidden."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_text"
+              c:identifier="gtk_tooltip_set_text"
+              doc="Sets the text of the tooltip to be @text. If @text is %NULL, the label
+will be hidden. See also gtk_tooltip_set_markup()."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a text string or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon"
+              c:identifier="gtk_tooltip_set_icon"
+              doc="Sets the icon of the tooltip (which is in front of the text) to be"
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pixbuf"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkPixbuf, or %NULL">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_from_stock"
+              c:identifier="gtk_tooltip_set_icon_from_stock"
+              doc="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."
+              version="2.12">
+        <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="a stock id, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size"
+                     transfer-ownership="none"
+                     doc="a stock icon size">
+            <type name="int" c:type="GtkIconSize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_from_icon_name"
+              c:identifier="gtk_tooltip_set_icon_from_icon_name"
+              doc="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."
+              version="2.14">
+        <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="an icon name, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size"
+                     transfer-ownership="none"
+                     doc="a stock icon size">
+            <type name="int" c:type="GtkIconSize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_from_gicon"
+              c:identifier="gtk_tooltip_set_icon_from_gicon"
+              doc="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."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gicon"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GIcon representing the icon, or %NULL">
+            <type name="Gio.Icon" c:type="GIcon*"/>
+          </parameter>
+          <parameter name="size"
+                     transfer-ownership="none"
+                     doc="a stock icon size">
+            <type name="int" c:type="GtkIconSize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_custom"
+              c:identifier="gtk_tooltip_set_custom"
+              doc="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()."
+              version="2.12">
+        <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="a #GtkWidget, or %NULL to unset the old custom widget.">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tip_area"
+              c:identifier="gtk_tooltip_set_tip_area"
+              doc="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()."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rect" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <class name="Tooltips"
+           c:type="GtkTooltips"
+           parent="Object"
+           glib:type-name="GtkTooltips"
+           glib:get-type="gtk_tooltips_get_type"
+           glib:type-struct="TooltipsClass">
+      <constructor name="new" c:identifier="gtk_tooltips_new">
+        <return-value transfer-ownership="full">
+          <type name="Tooltips" c:type="GtkTooltips*"/>
+        </return-value>
+      </constructor>
+      <function name="data_get" c:identifier="gtk_tooltips_data_get">
+        <return-value transfer-ownership="full">
+          <type name="TooltipsData" c:type="GtkTooltipsData*"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_info_from_tip_window"
+                c:identifier="gtk_tooltips_get_info_from_tip_window"
+                doc="in @tip_window, or %NULL
+are displayed, or %NULL
+Determines the tooltips and the widget they belong to from the window in
+which they are displayed.
+This function is mostly intended for use by accessibility technologies;
+applications should have little use for it."
+                version="2.4"
+                deprecated="2.12:">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="tip_window" transfer-ownership="none">
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+          <parameter name="tooltips" transfer-ownership="none">
+            <type name="Tooltips" c:type="GtkTooltips**"/>
+          </parameter>
+          <parameter name="current_widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget**"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="enable" c:identifier="gtk_tooltips_enable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="disable" c:identifier="gtk_tooltips_disable">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_delay" c:identifier="gtk_tooltips_set_delay">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="delay" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tip"
+              c:identifier="gtk_tooltips_set_tip"
+              doc="Adds a tooltip containing the message @tip_text to the specified #GtkWidget."
+              deprecated="2.12:">
+        <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="tip_text"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a string containing the tip itself.">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="tip_private"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a string of any further information that may be useful if the user gets stuck.">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="force_window" c:identifier="gtk_tooltips_force_window">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="Object" c:type="GtkObject"/>
+      </field>
+      <field name="tip_window">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="tip_label">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="active_tips_data">
+        <type name="TooltipsData" c:type="GtkTooltipsData*"/>
+      </field>
+      <field name="tips_data_list">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="delay" bits="30">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="enabled" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="have_grab" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="use_sticky_delay" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="timer_tag">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="last_popdown">
+        <type name="GLib.TimeVal" c:type="GTimeVal"/>
+      </field>
+    </class>
+    <record name="TooltipsClass"
+            c:type="GtkTooltipsClass"
+            glib:is-gtype-struct-for="Tooltips">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GtkObjectClass"/>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="TooltipsData" c:type="GtkTooltipsData">
+      <field name="tooltips" writable="1">
+        <type name="Tooltips" c:type="GtkTooltips*"/>
+      </field>
+      <field name="widget" writable="1">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="tip_text" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="tip_private" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+    </record>
+    <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="any" 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="any" 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="int" c:type="gint"/>
+        </parameter>
+        <parameter name="user_data" transfer-ownership="none" closure="3">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <interface name="TreeDragDest"
+               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">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="selection_data" transfer-ownership="none">
+            <type name="SelectionData" c:type="GtkSelectionData*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="row_drop_possible" invoker="row_drop_possible">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest_path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="selection_data" transfer-ownership="none">
+            <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="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!">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="selection_data" transfer-ownership="none">
+            <type name="SelectionData" c:type="GtkSelectionData*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="row_drop_possible"
+              c:identifier="gtk_tree_drag_dest_row_drop_possible"
+              doc="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&apos;t exist, though.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest_path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="selection_data" transfer-ownership="none">
+            <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" c:type="drag_data_received">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+            <parameter name="selection_data" transfer-ownership="none">
+              <type name="SelectionData" c:type="GtkSelectionData*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="row_drop_possible">
+        <callback name="row_drop_possible" c:type="row_drop_possible">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+            <parameter name="selection_data" transfer-ownership="none">
+              <type name="SelectionData" c:type="GtkSelectionData*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <interface name="TreeDragSource"
+               c:type="GtkTreeDragSource"
+               glib:type-name="GtkTreeDragSource"
+               glib:get-type="gtk_tree_drag_source_get_type"
+               glib:type-struct="TreeDragSourceIface">
+      <virtual-method name="row_draggable" invoker="row_draggable">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="drag_data_get" invoker="drag_data_get">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="selection_data" transfer-ownership="none">
+            <type name="SelectionData" c:type="GtkSelectionData*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="drag_data_delete" invoker="drag_data_delete">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="row_draggable"
+              c:identifier="gtk_tree_drag_source_row_draggable"
+              doc="Asks the #GtkTreeDragSource whether a particular row can be used as
+the source of a DND operation. If the source doesn&apos;t implement
+this interface, the row is assumed draggable.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="drag_data_delete"
+              c:identifier="gtk_tree_drag_source_drag_data_delete"
+              doc="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!">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="drag_data_get"
+              c:identifier="gtk_tree_drag_source_drag_data_get"
+              doc="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!">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="selection_data" transfer-ownership="none">
+            <type name="SelectionData" c:type="GtkSelectionData*"/>
+          </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" c:type="row_draggable">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_data_get">
+        <callback name="drag_data_get" c:type="drag_data_get">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="TreePath" c:type="GtkTreePath*"/>
+            </parameter>
+            <parameter name="selection_data" transfer-ownership="none">
+              <type name="SelectionData" c:type="GtkSelectionData*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_data_delete">
+        <callback name="drag_data_delete" c:type="drag_data_delete">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <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">
+      <field name="stamp" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="user_data" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="user_data2" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="user_data3" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <method name="copy"
+              c:identifier="gtk_tree_iter_copy"
+              doc="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().">
+        <return-value transfer-ownership="full">
+          <type name="TreeIter" c:type="GtkTreeIter*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gtk_tree_iter_free"
+              doc="Frees an iterator that has been allocated by gtk_tree_iter_copy().
+This function is mainly used for language bindings.">
+        <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="int" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <interface name="TreeModel"
+               c:type="GtkTreeModel"
+               glib:type-name="GtkTreeModel"
+               glib:get-type="gtk_tree_model_get_type"
+               glib:type-struct="TreeModelIface">
+      <virtual-method name="get_flags" invoker="get_flags">
+        <return-value transfer-ownership="full">
+          <type name="TreeModelFlags" c:type="GtkTreeModelFlags"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_n_columns" invoker="get_n_columns">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_column_type" invoker="get_column_type">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_iter" invoker="get_iter">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <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>
+      </virtual-method>
+      <virtual-method name="get_path" invoker="get_path">
+        <return-value transfer-ownership="full">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_value" invoker="get_value">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="iter_next" invoker="iter_next">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="iter_children" invoker="iter_children">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="iter_has_child" invoker="iter_has_child">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="iter_n_children" invoker="iter_n_children">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="iter_nth_child" invoker="iter_nth_child">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="n" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="iter_parent" invoker="iter_parent">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="ref_node" invoker="ref_node">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="unref_node" invoker="unref_node">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="get_flags"
+              c:identifier="gtk_tree_model_get_flags"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="TreeModelFlags" c:type="GtkTreeModelFlags"/>
+        </return-value>
+      </method>
+      <method name="get_n_columns"
+              c:identifier="gtk_tree_model_get_n_columns"
+              doc="Returns the number of columns supported by @tree_model.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_column_type"
+              c:identifier="gtk_tree_model_get_column_type"
+              doc="Returns the type of the column.">
+        <return-value transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter"
+              c:identifier="gtk_tree_model_get_iter"
+              doc="Sets @iter to a valid iterator pointing to @path.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="get_iter_from_string"
+              c:identifier="gtk_tree_model_get_iter_from_string"
+              doc="Sets @iter to a valid iterator pointing to @path_string, if it
+exists. Otherwise, @iter is left invalid and %FALSE is returned.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="path_string" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_string_from_iter"
+              c:identifier="gtk_tree_model_get_string_from_iter"
+              doc="Generates a string representation of the iter. This string is a &apos;:&apos;
+separated list of numbers. For example, &quot;4:10:0:3&quot; would be an
+acceptable return value for this string."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iter_first"
+              c:identifier="gtk_tree_model_get_iter_first"
+              doc="Initializes @iter with the first iterator in the tree (the one at the path
+&quot;0&quot;) and returns %TRUE.  Returns %FALSE if the tree is empty.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_path"
+              c:identifier="gtk_tree_model_get_path"
+              doc="Returns a newly-created #GtkTreePath referenced by @iter.  This path should
+be freed with gtk_tree_path_free().">
+        <return-value transfer-ownership="full">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_value"
+              c:identifier="gtk_tree_model_get_value"
+              doc="Initializes and sets @value to that at @column.
+When done with @value, g_value_unset() needs to be called
+to free any allocated memory.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="value"
+                     direction="inout"
+                     transfer-ownership="none"
+                     doc="An empty #GValue to set.">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_next"
+              c:identifier="gtk_tree_model_iter_next"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_children"
+              c:identifier="gtk_tree_model_iter_children"
+              doc="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;">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The #GtkTreeIter, or %NULL">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_has_child"
+              c:identifier="gtk_tree_model_iter_has_child"
+              doc="Returns %TRUE if @iter has children, %FALSE otherwise.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_n_children"
+              c:identifier="gtk_tree_model_iter_n_children"
+              doc="Returns the number of children that @iter has.  As a special case, if @iter
+is %NULL, then the number of toplevel nodes is returned.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The #GtkTreeIter, or %NULL.">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_nth_child"
+              c:identifier="gtk_tree_model_iter_nth_child"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The #GtkTreeIter to get the child from, or %NULL.">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="n" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_parent"
+              c:identifier="gtk_tree_model_iter_parent"
+              doc="Sets @iter to be the parent of @child.  If @child is at the toplevel, and
+doesn&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="child" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref_node"
+              c:identifier="gtk_tree_model_ref_node"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unref_node"
+              c:identifier="gtk_tree_model_unref_node"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get"
+              c:identifier="gtk_tree_model_get"
+              doc="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.
+If appropriate, the returned values have to be freed or unreferenced.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="foreach"
+              c:identifier="gtk_tree_model_foreach"
+              doc="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.">
+        <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="TreeModelForeachFunc"
+                  c:type="GtkTreeModelForeachFunc"/>
+          </parameter>
+          <parameter name="user_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="row_changed"
+              c:identifier="gtk_tree_model_row_changed"
+              doc="Emits the &quot;row-changed&quot; signal on @tree_model.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="row_inserted"
+              c:identifier="gtk_tree_model_row_inserted"
+              doc="Emits the &quot;row-inserted&quot; signal on @tree_model">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="row_has_child_toggled"
+              c:identifier="gtk_tree_model_row_has_child_toggled"
+              doc="Emits the &quot;row-has-child-toggled&quot; signal on @tree_model.  This should be
+called by models after the child state of a node changes.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="row_deleted"
+              c:identifier="gtk_tree_model_row_deleted"
+              doc="Emits the &quot;row-deleted&quot; 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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rows_reordered"
+              c:identifier="gtk_tree_model_rows_reordered"
+              doc="reordered
+reordered, or %NULL if the depth of @path is 0.
+to its old position before the re-ordering,
+i.e. @new_order&lt;literal&gt;[newpos] = oldpos&lt;/literal&gt;.
+Emits the &quot;rows-reordered&quot; signal on @tree_model.  This should be called by
+models when their rows have been reordered.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <glib:signal name="row-changed"
+                   doc="This signal is emitted when a row in the model has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </glib:signal>
+      <glib:signal name="row-deleted"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-has-child-toggled"
+                   doc="This signal is emitted when a row has gotten the first child row or lost
+its last child row.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </glib:signal>
+      <glib:signal name="row-inserted"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </glib:signal>
+      <glib:signal name="rows-reordered"
+                   doc="have been reordered
+each child to its old position before the re-ordering,
+i.e. @new_order&lt;literal&gt;[newpos] = oldpos&lt;/literal&gt;.
+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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </interface>
+    <class name="TreeModelFilter"
+           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"/>
+      <constructor name="new"
+                   c:identifier="gtk_tree_model_filter_new"
+                   doc="Creates a new #GtkTreeModel, with @child_model as the child_model
+and @root as the virtual root."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="TreeModelFilter" c:type="GtkTreeModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_model" transfer-ownership="none">
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+          <parameter name="root"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #GtkTreePath or %NULL.">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_visible_func"
+              c:identifier="gtk_tree_model_filter_set_visible_func"
+              doc="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 &quot;HI&quot; &amp;ast;/
+gchar *str;
+gboolean visible = FALSE;
+gtk_tree_model_get (model, iter, 0, &amp;str, -1);
+if (str &amp;&amp; strcmp (str, &quot;HI&quot;) == 0)
+visible = TRUE;
+g_free (str);
+return visible;
+}
+&lt;/programlisting&gt;&lt;/informalexample&gt;"
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="TreeModelFilterVisibleFunc"
+                  c:type="GtkTreeModelFilterVisibleFunc"/>
+          </parameter>
+          <parameter name="data"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="User data to pass to the visible function, or %NULL.">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="call"
+                     doc="Destroy notifier of @data, or %NULL.">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_modify_func"
+              c:identifier="gtk_tree_model_filter_set_modify_func"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="types" direction="out" transfer-ownership="full">
+            <type name="GType" c:type="GType*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="4"
+                     destroy="5">
+            <type name="TreeModelFilterModifyFunc"
+                  c:type="GtkTreeModelFilterModifyFunc"/>
+          </parameter>
+          <parameter name="data"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="User data to pass to the modify function, or %NULL.">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="call"
+                     doc="Destroy notifier of @data, or %NULL.">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_visible_column"
+              c:identifier="gtk_tree_model_filter_set_visible_column"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_model"
+              c:identifier="gtk_tree_model_filter_get_model"
+              doc="Returns a pointer to the child model of @filter."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </return-value>
+      </method>
+      <method name="convert_child_iter_to_iter"
+              c:identifier="gtk_tree_model_filter_convert_child_iter_to_iter"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter_iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="child_iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_iter_to_child_iter"
+              c:identifier="gtk_tree_model_filter_convert_iter_to_child_iter"
+              doc="Sets @child_iter to point to the row pointed to by @filter_iter."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="filter_iter" transfer-ownership="none">
+            <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"
+              doc="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&apos;t a valid path on the
+child model or points to a row which is not visible in @filter, then %NULL
+is returned."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_path_to_child_path"
+              c:identifier="gtk_tree_model_filter_convert_path_to_child_path"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="filter_path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="refilter"
+              c:identifier="gtk_tree_model_filter_refilter"
+              doc="Emits ::row_changed for each row in the child model, which causes
+the filter to re-evaluate whether a row is visible or not."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="clear_cache"
+              c:identifier="gtk_tree_model_filter_clear_cache"
+              doc="This function should almost never be called. It clears the @filter
+of any cached iterators that haven&apos;t been reffed with
+gtk_tree_model_ref_node(). This might be useful if the child model
+being filtered is static (and doesn&apos;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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <property name="child-model" writable="1" construct-only="1">
+        <type name="TreeModel" c:type="GtkTreeModel"/>
+      </property>
+      <property name="virtual-root" writable="1" construct-only="1">
+        <type name="TreePath" c:type="GtkTreePath"/>
+      </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="gtk_reserved0">
+        <callback name="gtk_reserved0" c:type="_gtk_reserved0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <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="int" c:type="gint"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TreeModelFilterPrivate" c:type="GtkTreeModelFilterPrivate">
+    </record>
+    <callback name="TreeModelFilterVisibleFunc"
+              c:type="GtkTreeModelFilterVisibleFunc">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="any" 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="boolean" 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="any" 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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_flags">
+        <callback name="get_flags" c:type="get_flags">
+          <return-value transfer-ownership="full">
+            <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" c:type="get_n_columns">
+          <return-value transfer-ownership="none">
+            <type name="int" 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" c:type="get_column_type">
+          <return-value transfer-ownership="none">
+            <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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_iter">
+        <callback name="get_iter" c:type="get_iter">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <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="get_path">
+        <callback name="get_path" c:type="get_path">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_value">
+        <callback name="get_value" c:type="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">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+            <parameter name="column" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="value" transfer-ownership="none">
+              <type name="GObject.Value" c:type="GValue*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="iter_next">
+        <callback name="iter_next" c:type="iter_next">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="iter_children">
+        <callback name="iter_children" c:type="iter_children">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="iter_has_child">
+        <callback name="iter_has_child" c:type="iter_has_child">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="iter_n_children">
+        <callback name="iter_n_children" c:type="iter_n_children">
+          <return-value transfer-ownership="none">
+            <type name="int" 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">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="iter_nth_child">
+        <callback name="iter_nth_child" c:type="iter_nth_child">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+            <parameter name="parent" transfer-ownership="none">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+            <parameter name="n" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="iter_parent">
+        <callback name="iter_parent" c:type="iter_parent">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+            <parameter name="child" transfer-ownership="none">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="ref_node">
+        <callback name="ref_node" c:type="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">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="unref_node">
+        <callback name="unref_node" c:type="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">
+              <type name="TreeIter" c:type="GtkTreeIter*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+    </record>
+    <class name="TreeModelSort"
+           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"/>
+      <constructor name="new_with_model"
+                   c:identifier="gtk_tree_model_sort_new_with_model"
+                   doc="Creates a new #GtkTreeModel, with @child_model as the child model.">
+        <return-value transfer-ownership="full">
+          <type name="TreeModelSort" c:type="GtkTreeModel*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_model" transfer-ownership="none">
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_model"
+              c:identifier="gtk_tree_model_sort_get_model"
+              doc="Returns the model the #GtkTreeModelSort is sorting.">
+        <return-value transfer-ownership="full">
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </return-value>
+      </method>
+      <method name="convert_child_path_to_path"
+              c:identifier="gtk_tree_model_sort_convert_child_path_to_path"
+              doc="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&apos;t a valid
+path on the child model, then %NULL is returned.">
+        <return-value transfer-ownership="full">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_child_iter_to_iter"
+              c:identifier="gtk_tree_model_sort_convert_child_iter_to_iter"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="child_iter" transfer-ownership="none">
+            <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="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.">
+        <return-value transfer-ownership="full">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="sorted_path" transfer-ownership="none">
+            <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="Sets @child_iter to point to the row pointed to by @sorted_iter.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="sorted_iter" transfer-ownership="none">
+            <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="This resets the default sort function to be in the &apos;unsorted&apos; 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 &apos;unsorted&apos; state.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="clear_cache"
+              c:identifier="gtk_tree_model_sort_clear_cache"
+              doc="This function should almost never be called.  It clears the @tree_model_sort
+of any cached iterators that haven&apos;t been reffed with
+gtk_tree_model_ref_node().  This might be useful if the child model being
+sorted is static (and doesn&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="iter_is_valid"
+              c:identifier="gtk_tree_model_sort_iter_is_valid"
+              doc="&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."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <property name="model" writable="1" construct-only="1">
+        <type name="TreeModel" c:type="GtkTreeModel"/>
+      </property>
+      <field name="parent">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="root">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="stamp">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="child_flags">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="child_model">
+        <type name="TreeModel" c:type="GtkTreeModel*"/>
+      </field>
+      <field name="zero_ref_count">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="sort_list">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="sort_column_id">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="order">
+        <type name="SortType" c:type="GtkSortType"/>
+      </field>
+      <field name="default_sort_func">
+        <type name="TreeIterCompareFunc" c:type="GtkTreeIterCompareFunc"/>
+      </field>
+      <field name="default_sort_data">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="default_sort_destroy">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <field name="changed_id">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="inserted_id">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_child_toggled_id">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="deleted_id">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="reordered_id">
+        <type name="uint" 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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_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">
+      <constructor name="new"
+                   c:identifier="gtk_tree_path_new"
+                   doc="Creates a new #GtkTreePath.  This structure refers to a row.">
+        <return-value transfer-ownership="full">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_from_string"
+                   c:identifier="gtk_tree_path_new_from_string"
+                   doc="Creates a new #GtkTreePath initialized to @path.  @path is expected to be a
+colon separated list of numbers.  For example, the string &quot;10:4:0&quot; 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.">
+        <return-value transfer-ownership="full">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_from_indices"
+                   c:identifier="gtk_tree_path_new_from_indices"
+                   doc="Creates a new path with @first_index and @varargs as indices."
+                   version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_index" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_first"
+                   c:identifier="gtk_tree_path_new_first"
+                   doc="Creates a new #GtkTreePath.  The string representation of this path is &quot;0&quot;">
+        <return-value transfer-ownership="full">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+      </constructor>
+      <method name="to_string"
+              c:identifier="gtk_tree_path_to_string"
+              doc="Generates a string representation of the path.  This string is a &apos;:&apos;
+separated list of numbers.  For example, &quot;4:10:0:3&quot; would be an acceptable return value for this string.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="append_index"
+              c:identifier="gtk_tree_path_append_index"
+              doc="Appends a new index to a path.  As a result, the depth of the path is
+increased.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend_index"
+              c:identifier="gtk_tree_path_prepend_index"
+              doc="Prepends a new index to a path.  As a result, the depth of the path is
+increased.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_depth"
+              c:identifier="gtk_tree_path_get_depth"
+              doc="Returns the current depth of @path.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_indices"
+              c:identifier="gtk_tree_path_get_indices"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </return-value>
+      </method>
+      <method name="free" c:identifier="gtk_tree_path_free" doc="Frees @path.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="gtk_tree_path_copy"
+              doc="Creates a new #GtkTreePath as a copy of @path.">
+        <return-value transfer-ownership="full">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+      </method>
+      <method name="compare"
+              c:identifier="gtk_tree_path_compare"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="b" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next"
+              c:identifier="gtk_tree_path_next"
+              doc="Moves the @path to point to the next node at the current depth.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="prev"
+              c:identifier="gtk_tree_path_prev"
+              doc="Moves the @path to point to the previous node at the current depth,
+if it exists.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="up"
+              c:identifier="gtk_tree_path_up"
+              doc="Moves the @path to point to its parent node, if it has a parent.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="down"
+              c:identifier="gtk_tree_path_down"
+              doc="Moves @path to point to the first child of the current path.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="is_ancestor"
+              c:identifier="gtk_tree_path_is_ancestor"
+              doc="Returns %TRUE if @descendant is a descendant of @path.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="descendant" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_descendant"
+              c:identifier="gtk_tree_path_is_descendant"
+              doc="Returns %TRUE if @path is a descendant of @ancestor.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="ancestor" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="TreeRowReference"
+            c:type="GtkTreeRowReference"
+            glib:type-name="GtkTreeRowReference"
+            glib:get-type="gtk_tree_row_reference_get_type">
+      <constructor name="new"
+                   c:identifier="gtk_tree_row_reference_new"
+                   doc="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&apos;t a valid path in @model, then %NULL is returned.">
+        <return-value transfer-ownership="full">
+          <type name="TreeRowReference" c:type="GtkTreeRowReference*"/>
+        </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>
+        </parameters>
+      </constructor>
+      <constructor name="new_proxy"
+                   c:identifier="gtk_tree_row_reference_new_proxy"
+                   doc="You do not need to use this function.  Creates a row reference based on
+so long as it exists.  If @path isn&apos;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&apos;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.">
+        <return-value transfer-ownership="full">
+          <type name="TreeRowReference" c:type="GtkTreeRowReference*"/>
+        </return-value>
+        <parameters>
+          <parameter name="proxy" transfer-ownership="none">
+            <type name="GObject.Object" c:type="GObject*"/>
+          </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>
+        </parameters>
+      </constructor>
+      <method name="get_path"
+              c:identifier="gtk_tree_row_reference_get_path"
+              doc="Returns a path that the row reference currently points to, or %NULL if the
+path pointed to is no longer valid.">
+        <return-value transfer-ownership="full">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </return-value>
+      </method>
+      <method name="get_model"
+              c:identifier="gtk_tree_row_reference_get_model"
+              doc="Returns the model that the row reference is monitoring."
+              version="2.8">
+        <return-value transfer-ownership="full">
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </return-value>
+      </method>
+      <method name="valid"
+              c:identifier="gtk_tree_row_reference_valid"
+              doc="Returns %TRUE if the @reference is non-%NULL and refers to a current valid
+path.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="gtk_tree_row_reference_copy"
+              doc="Copies a #GtkTreeRowReference."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="TreeRowReference" c:type="GtkTreeRowReference*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="gtk_tree_row_reference_free"
+              doc="Free&apos;s @reference. @reference may be %NULL.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="TreeSelection"
+           c:type="GtkTreeSelection"
+           parent="GObject.Object"
+           glib:type-name="GtkTreeSelection"
+           glib:get-type="gtk_tree_selection_get_type"
+           glib:type-struct="TreeSelectionClass">
+      <method name="set_mode"
+              c:identifier="gtk_tree_selection_set_mode"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="SelectionMode" c:type="GtkSelectionMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mode"
+              c:identifier="gtk_tree_selection_get_mode"
+              doc="Gets the selection mode for @selection. See
+gtk_tree_selection_set_mode().">
+        <return-value transfer-ownership="full">
+          <type name="SelectionMode" c:type="GtkSelectionMode"/>
+        </return-value>
+      </method>
+      <method name="set_select_function"
+              c:identifier="gtk_tree_selection_set_select_function"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="TreeSelectionFunc" c:type="GtkTreeSelectionFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_user_data"
+              c:identifier="gtk_tree_selection_get_user_data"
+              doc="Returns the user data for the selection function.">
+        <return-value transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </return-value>
+      </method>
+      <method name="get_tree_view"
+              c:identifier="gtk_tree_selection_get_tree_view"
+              doc="Returns the tree view associated with @selection.">
+        <return-value transfer-ownership="full">
+          <type name="TreeView" c:type="GtkTreeView*"/>
+        </return-value>
+      </method>
+      <method name="get_select_function"
+              c:identifier="gtk_tree_selection_get_select_function"
+              doc="Returns the current selection function."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="TreeSelectionFunc" c:type="GtkTreeSelectionFunc"/>
+        </return-value>
+      </method>
+      <method name="get_selected"
+              c:identifier="gtk_tree_selection_get_selected"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="model"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="A pointer to set to the #GtkTreeModel, or NULL.">
+            <type name="TreeModel" c:type="GtkTreeModel**"/>
+          </parameter>
+          <parameter name="iter"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The #GtkTreeIter, or NULL.">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selected_rows"
+              c:identifier="gtk_tree_selection_get_selected_rows"
+              doc="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);
+]|"
+              version="2.2">
+        <return-value transfer-ownership="full"
+                      doc="A #GList containing a #GtkTreePath for each selected row.">
+          <type name="GLib.List" c:type="GList*">
+            <type name="TreePath"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="model"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A pointer to set to the #GtkTreeModel, or NULL.">
+            <type name="TreeModel" c:type="GtkTreeModel**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="count_selected_rows"
+              c:identifier="gtk_tree_selection_count_selected_rows"
+              doc="Returns the number of rows that have been selected in @tree."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="selected_foreach"
+              c:identifier="gtk_tree_selection_selected_foreach"
+              doc="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.">
+        <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="TreeSelectionForeachFunc"
+                  c:type="GtkTreeSelectionForeachFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_path"
+              c:identifier="gtk_tree_selection_select_path"
+              doc="Select the row at @path.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect_path"
+              c:identifier="gtk_tree_selection_unselect_path"
+              doc="Unselects the row at @path.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_iter"
+              c:identifier="gtk_tree_selection_select_iter"
+              doc="Selects the specified iterator.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect_iter"
+              c:identifier="gtk_tree_selection_unselect_iter"
+              doc="Unselects the specified iterator.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="path_is_selected"
+              c:identifier="gtk_tree_selection_path_is_selected"
+              doc="Returns %TRUE if the row pointed to by @path is currently selected.  If @path
+does not point to a valid location, %FALSE is returned">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_is_selected"
+              c:identifier="gtk_tree_selection_iter_is_selected"
+              doc="Returns %TRUE if the row at @iter is currently selected.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="select_all"
+              c:identifier="gtk_tree_selection_select_all"
+              doc="Selects all the nodes. @selection must be set to #GTK_SELECTION_MULTIPLE
+mode.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unselect_all"
+              c:identifier="gtk_tree_selection_unselect_all"
+              doc="Unselects all the nodes.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="select_range"
+              c:identifier="gtk_tree_selection_select_range"
+              doc="Selects a range of nodes, determined by @start_path and @end_path inclusive.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="end_path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unselect_range"
+              c:identifier="gtk_tree_selection_unselect_range"
+              doc="Unselects a range of nodes, determined by @start_path and @end_path
+inclusive."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="end_path" transfer-ownership="none">
+            <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="any" c:type="gpointer"/>
+      </field>
+      <field name="destroy">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <glib:signal name="changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="TreeSelectionFunc" c:type="GtkTreeSelectionFunc">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <interface name="TreeSortable"
+               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">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_column_id"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="order" transfer-ownership="none">
+            <type name="SortType" c:type="GtkSortType*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_sort_column_id" invoker="set_sort_column_id">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_column_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="order" transfer-ownership="none">
+            <type name="SortType" c:type="GtkSortType"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_sort_func">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_column_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="func" transfer-ownership="none">
+            <type name="TreeIterCompareFunc" c:type="GtkTreeIterCompareFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="set_default_sort_func">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func" transfer-ownership="none">
+            <type name="TreeIterCompareFunc" c:type="GtkTreeIterCompareFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="has_default_sort_func"
+                      invoker="has_default_sort_func">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </virtual-method>
+      <method name="sort_column_changed"
+              c:identifier="gtk_tree_sortable_sort_column_changed"
+              doc="Emits a #GtkTreeSortable::sort-column-changed signal on @sortable.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_sort_column_id"
+              c:identifier="gtk_tree_sortable_get_sort_column_id"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_column_id"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="order" transfer-ownership="none">
+            <type name="SortType" c:type="GtkSortType*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sort_column_id"
+              c:identifier="gtk_tree_sortable_set_sort_column_id"
+              doc="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. @sortable 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;">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_column_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="order" transfer-ownership="none">
+            <type name="SortType" c:type="GtkSortType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_sort_func"
+              c:identifier="gtk_tree_sortable_set_sort_func"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_column_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="sort_func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <type name="TreeIterCompareFunc" c:type="GtkTreeIterCompareFunc"/>
+          </parameter>
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="User data to pass to @sort_func, or %NULL">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="call"
+                     doc="Destroy notifier of @user_data, or %NULL">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_default_sort_func"
+              c:identifier="gtk_tree_sortable_set_default_sort_func"
+              doc="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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="TreeIterCompareFunc" c:type="GtkTreeIterCompareFunc"/>
+          </parameter>
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="User data to pass to @sort_func, or %NULL">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="call"
+                     doc="Destroy notifier of @user_data, or %NULL">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="has_default_sort_func"
+              c:identifier="gtk_tree_sortable_has_default_sort_func"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <glib:signal name="sort-column-changed"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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" c:type="get_sort_column_id">
+          <return-value transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </return-value>
+          <parameters>
+            <parameter name="sortable" transfer-ownership="none">
+              <type name="TreeSortable" c:type="GtkTreeSortable*"/>
+            </parameter>
+            <parameter name="sort_column_id"
+                       direction="out"
+                       transfer-ownership="full">
+              <type name="int" c:type="gint*"/>
+            </parameter>
+            <parameter name="order" transfer-ownership="none">
+              <type name="SortType" c:type="GtkSortType*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_sort_column_id">
+        <callback name="set_sort_column_id" c:type="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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="order" transfer-ownership="none">
+              <type name="SortType" c:type="GtkSortType"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_sort_func">
+        <callback name="set_sort_func" c:type="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">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="func" transfer-ownership="none">
+              <type name="TreeIterCompareFunc"
+                    c:type="GtkTreeIterCompareFunc"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+            <parameter name="destroy" transfer-ownership="none">
+              <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="set_default_sort_func">
+        <callback name="set_default_sort_func" c:type="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="func" transfer-ownership="none">
+              <type name="TreeIterCompareFunc"
+                    c:type="GtkTreeIterCompareFunc"/>
+            </parameter>
+            <parameter name="data" transfer-ownership="none">
+              <type name="any" c:type="gpointer"/>
+            </parameter>
+            <parameter name="destroy" transfer-ownership="none">
+              <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="has_default_sort_func">
+        <callback name="has_default_sort_func" c:type="has_default_sort_func">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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: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"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="TreeStore" c:type="GtkTreeStore*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="newv"
+                   c:identifier="gtk_tree_store_newv"
+                   doc="Non vararg creation function.  Used primarily by language bindings.">
+        <return-value transfer-ownership="full">
+          <type name="TreeStore" c:type="GtkTreeStore*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="types"
+                     transfer-ownership="none"
+                     doc="an array of #GType types for the columns, from first to last">
+            <array length="0" c:type="GType*">
+              <type name="GType"/>
+            </array>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="set_column_types"
+              c:identifier="gtk_tree_store_set_column_types"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_columns" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="types"
+                     transfer-ownership="none"
+                     doc="An array of #GType types, one for each column">
+            <array length="1" c:type="GType*">
+              <type name="GType"/>
+            </array>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_value"
+              c:identifier="gtk_tree_store_set_value"
+              doc="Sets the data in the cell specified by @iter and @column.
+The type of @value must be convertible to the type of the
+column.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="gtk_tree_store_set"
+              doc="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 &quot;Foo&quot;, you would write
+&lt;literal&gt;gtk_tree_store_set (store, iter, 0, &quot;Foo&quot;, -1)&lt;/literal&gt;.
+The value will be copied or referenced by the store if appropriate.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_valuesv"
+              c:identifier="gtk_tree_store_set_valuesv"
+              doc="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."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="columns"
+                     transfer-ownership="none"
+                     doc="an array of column numbers">
+            <array length="4" c:type="gint*">
+              <type name="int"/>
+            </array>
+          </parameter>
+          <parameter name="values"
+                     transfer-ownership="none"
+                     doc="an array of GValues">
+            <array length="4" c:type="GValue*">
+              <type name="GObject.Value"/>
+            </array>
+          </parameter>
+          <parameter name="n_values" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove"
+              c:identifier="gtk_tree_store_remove"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert"
+              c:identifier="gtk_tree_store_insert"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A valid #GtkTreeIter, or %NULL">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_before"
+              c:identifier="gtk_tree_store_insert_before"
+              doc="Inserts a new row before @sibling.  If @sibling is %NULL, then the row will
+be appended to @parent &apos;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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A valid #GtkTreeIter, or %NULL">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="sibling"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A valid #GtkTreeIter, or %NULL">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_after"
+              c:identifier="gtk_tree_store_insert_after"
+              doc="Inserts a new row after @sibling.  If @sibling is %NULL, then the row will be
+prepended to @parent &apos;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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A valid #GtkTreeIter, or %NULL">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="sibling"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A valid #GtkTreeIter, or %NULL">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_with_values"
+              c:identifier="gtk_tree_store_insert_with_values"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="An unset #GtkTreeIter to set the new row, or %NULL.">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A valid #GtkTreeIter, or %NULL">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" 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"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="An unset #GtkTreeIter to set the new row, or %NULL.">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A valid #GtkTreeIter, or %NULL">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="columns" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="values" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+          <parameter name="n_values" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="prepend"
+              c:identifier="gtk_tree_store_prepend"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A valid #GtkTreeIter, or %NULL">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="append"
+              c:identifier="gtk_tree_store_append"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A valid #GtkTreeIter, or %NULL">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_ancestor"
+              c:identifier="gtk_tree_store_is_ancestor"
+              doc="Returns %TRUE if @iter is an ancestor of @descendant.  That is, @iter is the
+parent (or grandparent or great-grandparent) of @descendant.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="descendant" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="iter_depth"
+              c:identifier="gtk_tree_store_iter_depth"
+              doc="Returns the depth of @iter.  This will be 0 for anything on the root level, 1
+for anything down a level, etc.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear"
+              c:identifier="gtk_tree_store_clear"
+              doc="Removes all rows from @tree_store">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="iter_is_valid"
+              c:identifier="gtk_tree_store_iter_is_valid"
+              doc="purposes.
+Checks if the given iter is a valid iter for this #GtkTreeStore."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reorder"
+              c:identifier="gtk_tree_store_reorder"
+              doc="to its old position before the re-ordering,
+i.e. @new_order&lt;literal&gt;[newpos] = oldpos&lt;/literal&gt;.
+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."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="new_order"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="swap"
+              c:identifier="gtk_tree_store_swap"
+              doc="Swaps @a and @b in the same level of @tree_store. Note that this function
+only works with unsorted stores."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+        </parameters>
+      </method>
+      <method name="move_before"
+              c:identifier="gtk_tree_store_move_before"
+              doc="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."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #GtkTreeIter or %NULL.">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_after"
+              c:identifier="gtk_tree_store_move_after"
+              doc="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."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="iter" transfer-ownership="none">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="position"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #GtkTreeIter.">
+            <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="int" c:type="gint"/>
+      </field>
+      <field name="root">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="last">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="n_columns">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="sort_column_id">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="sort_list">
+        <type name="GLib.List" c:type="GList*"/>
+      </field>
+      <field name="order">
+        <type name="SortType" c:type="GtkSortType"/>
+      </field>
+      <field name="column_headers">
+        <type name="any" c:type="GType*"/>
+      </field>
+      <field name="default_sort_func">
+        <type name="TreeIterCompareFunc" c:type="GtkTreeIterCompareFunc"/>
+      </field>
+      <field name="default_sort_data">
+        <type name="any" 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="uint" 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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="TreeView"
+           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"/>
+      <constructor name="new"
+                   c:identifier="gtk_tree_view_new"
+                   doc="Creates a new #GtkTreeView widget.">
+        <return-value transfer-ownership="full">
+          <type name="TreeView" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_model"
+                   c:identifier="gtk_tree_view_new_with_model"
+                   doc="Creates a new #GtkTreeView widget with the model initialized to @model.">
+        <return-value transfer-ownership="full">
+          <type name="TreeView" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="model" transfer-ownership="none">
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_model"
+              c:identifier="gtk_tree_view_get_model"
+              doc="Returns the model the #GtkTreeView is based on.  Returns %NULL if the
+model is unset.">
+        <return-value transfer-ownership="full">
+          <type name="TreeModel" c:type="GtkTreeModel*"/>
+        </return-value>
+      </method>
+      <method name="set_model"
+              c:identifier="gtk_tree_view_set_model"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="model"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The model.">
+            <type name="TreeModel" c:type="GtkTreeModel*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_selection"
+              c:identifier="gtk_tree_view_get_selection"
+              doc="Gets the #GtkTreeSelection associated with @tree_view.">
+        <return-value transfer-ownership="full">
+          <type name="TreeSelection" c:type="GtkTreeSelection*"/>
+        </return-value>
+      </method>
+      <method name="get_hadjustment"
+              c:identifier="gtk_tree_view_get_hadjustment"
+              doc="Gets the #GtkAdjustment currently being used for the horizontal aspect.
+used.">
+        <return-value transfer-ownership="full">
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="set_hadjustment"
+              c:identifier="gtk_tree_view_set_hadjustment"
+              doc="Sets the #GtkAdjustment for the current horizontal aspect.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The #GtkAdjustment to set, or %NULL">
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_vadjustment"
+              c:identifier="gtk_tree_view_get_vadjustment"
+              doc="Gets the #GtkAdjustment currently being used for the vertical aspect.
+used.">
+        <return-value transfer-ownership="full">
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="set_vadjustment"
+              c:identifier="gtk_tree_view_set_vadjustment"
+              doc="Sets the #GtkAdjustment for the current vertical aspect.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The #GtkAdjustment to set, or %NULL">
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_headers_visible"
+              c:identifier="gtk_tree_view_get_headers_visible"
+              doc="Returns %TRUE if the headers on the @tree_view are visible.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_headers_visible"
+              c:identifier="gtk_tree_view_set_headers_visible"
+              doc="Sets the visibility state of the headers.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="headers_visible" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="columns_autosize"
+              c:identifier="gtk_tree_view_columns_autosize"
+              doc="Resizes all columns to their optimal width. Only works after the
+treeview has been realized.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_headers_clickable"
+              c:identifier="gtk_tree_view_get_headers_clickable"
+              doc="Returns whether all header columns are clickable."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_headers_clickable"
+              c:identifier="gtk_tree_view_set_headers_clickable"
+              doc="Allow the column title buttons to be clicked.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" 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="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_rules_hint"
+              c:identifier="gtk_tree_view_get_rules_hint">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="append_column"
+              c:identifier="gtk_tree_view_append_column"
+              doc="Appends @column to the list of columns. If @tree_view has &quot;fixed_height&quot;
+mode enabled, then @column must have its &quot;sizing&quot; property set to be
+GTK_TREE_VIEW_COLUMN_FIXED.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_column"
+              c:identifier="gtk_tree_view_remove_column"
+              doc="Removes @column from @tree_view.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_column"
+              c:identifier="gtk_tree_view_insert_column"
+              doc="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
+&quot;fixed_height&quot; mode enabled, then @column must have its &quot;sizing&quot; property
+set to be GTK_TREE_VIEW_COLUMN_FIXED.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="insert_column_with_attributes"
+              c:identifier="gtk_tree_view_insert_column_with_attributes"
+              doc="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 &quot;fixed_height&quot; mode enabled, then the new column will have its sizing
+property set to be GTK_TREE_VIEW_COLUMN_FIXED.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="title" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cell" transfer-ownership="none">
+            <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="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 &quot;fixed_height&quot; mode enabled, then the new column will have its
+&quot;sizing&quot; property set to be GTK_TREE_VIEW_COLUMN_FIXED.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="title" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cell" transfer-ownership="none">
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="5"
+                     destroy="6">
+            <type name="TreeCellDataFunc" c:type="GtkTreeCellDataFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="dnotify" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_column"
+              c:identifier="gtk_tree_view_get_column"
+              doc="Gets the #GtkTreeViewColumn at the given position in the #tree_view.
+range of columns.">
+        <return-value transfer-ownership="full">
+          <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+        </return-value>
+        <parameters>
+          <parameter name="n" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_columns"
+              c:identifier="gtk_tree_view_get_columns"
+              doc="Returns a #GList of all the #GtkTreeViewColumn s currently in @tree_view.
+The returned list must be freed with g_list_free ().">
+        <return-value transfer-ownership="container"
+                      doc="A list of #GtkTreeViewColumn s">
+          <type name="GLib.List" c:type="GList*">
+            <type name="TreeViewColumn"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="move_column_after"
+              c:identifier="gtk_tree_view_move_column_after"
+              doc="Moves @column to be after to @base_column.  If @base_column is %NULL, then">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+          <parameter name="base_column"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The #GtkTreeViewColumn to be moved relative to, or %NULL.">
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_expander_column"
+              c:identifier="gtk_tree_view_set_expander_column"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_expander_column"
+              c:identifier="gtk_tree_view_get_expander_column"
+              doc="Returns the column that is the current expander column.  This
+column has the expander arrow drawn next to it.">
+        <return-value transfer-ownership="full">
+          <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+        </return-value>
+      </method>
+      <method name="set_column_drag_function"
+              c:identifier="gtk_tree_view_set_column_drag_function"
+              doc="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.">
+        <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="2"
+                     destroy="3"
+                     doc="A function to determine which columns are reorderable, or %NULL.">
+            <type name="TreeViewColumnDropFunc"
+                  c:type="GtkTreeViewColumnDropFunc"/>
+          </parameter>
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="User data to be passed to @func, or %NULL">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="call"
+                     doc="Destroy notifier for @user_data, or %NULL">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scroll_to_point"
+              c:identifier="gtk_tree_view_scroll_to_point"
+              doc="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&apos;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&apos;t scrolled.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tree_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="tree_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scroll_to_cell"
+              c:identifier="gtk_tree_view_scroll_to_cell"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The path of the row to move to, or %NULL.">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="column"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The #GtkTreeViewColumn to move horizontally to, or %NULL.">
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+          <parameter name="use_align" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="row_align" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+          <parameter name="col_align" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="row_activated"
+              c:identifier="gtk_tree_view_row_activated"
+              doc="Activates the cell determined by @path and @column.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="expand_all"
+              c:identifier="gtk_tree_view_expand_all"
+              doc="Recursively expands all nodes in the @tree_view.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="collapse_all"
+              c:identifier="gtk_tree_view_collapse_all"
+              doc="Recursively collapses all visible, expanded nodes in @tree_view.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="expand_to_path"
+              c:identifier="gtk_tree_view_expand_to_path"
+              doc="Expands the row at @path. This will also expand all parent rows of"
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="expand_row"
+              c:identifier="gtk_tree_view_expand_row"
+              doc="Opens the row so its children are visible.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="open_all" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="collapse_row"
+              c:identifier="gtk_tree_view_collapse_row"
+              doc="Collapses a row (hides its child rows, if they exist).">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="map_expanded_rows"
+              c:identifier="gtk_tree_view_map_expanded_rows"
+              doc="Calls @func on all expanded rows.">
+        <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="TreeViewMappingFunc" c:type="GtkTreeViewMappingFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="row_expanded"
+              c:identifier="gtk_tree_view_row_expanded"
+              doc="Returns %TRUE if the node pointed to by @path is expanded in @tree_view.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_reorderable"
+              c:identifier="gtk_tree_view_set_reorderable"
+              doc="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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="reorderable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_reorderable"
+              c:identifier="gtk_tree_view_get_reorderable"
+              doc="Retrieves whether the user can reorder the tree via drag-and-drop. See
+gtk_tree_view_set_reorderable().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_cursor"
+              c:identifier="gtk_tree_view_set_cursor"
+              doc="Sets the current keyboard focus to be at @path, and selects it.  This is
+useful when you want to focus the user&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="focus_column"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #GtkTreeViewColumn, or %NULL">
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+          <parameter name="start_editing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_cursor_on_cell"
+              c:identifier="gtk_tree_view_set_cursor_on_cell"
+              doc="Sets the current keyboard focus to be at @path, and selects it.  This is
+useful when you want to focus the user&apos;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."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="focus_column"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #GtkTreeViewColumn, or %NULL">
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+          <parameter name="focus_cell"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A #GtkCellRenderer, or %NULL">
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="start_editing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cursor"
+              c:identifier="gtk_tree_view_get_cursor"
+              doc="Fills in @path and @focus_column with the current path and focus column.  If
+the cursor isn&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A pointer to be filled with the current cursor path, or %NULL">
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="focus_column"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A pointer to be filled with the current focus column, or %NULL">
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_bin_window"
+              c:identifier="gtk_tree_view_get_bin_window"
+              doc="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">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_path_at_pos"
+              c:identifier="gtk_tree_view_get_path_at_pos"
+              doc="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().">
+        <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="path"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="A pointer to a #GtkTreePath pointer to be filled in, or %NULL">
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="column"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="A pointer to a #GtkTreeViewColumn pointer to be filled in, or %NULL">
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn**"/>
+          </parameter>
+          <parameter name="cell_x"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="A pointer where the X coordinate relative to the cell can be placed, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="cell_y"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="A pointer where the Y coordinate relative to the cell can be placed, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cell_area"
+              c:identifier="gtk_tree_view_get_cell_area"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkTreePath for the row, or %NULL to get only horizontal coordinates">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="column"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkTreeViewColumn for the column, or %NULL to get only vertical coordinates">
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+          <parameter name="rect" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_background_area"
+              c:identifier="gtk_tree_view_get_background_area"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkTreePath for the row, or %NULL to get only horizontal coordinates">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="column"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkTreeViewColumn for the column, or %NULL to get only vertical coordiantes">
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+          <parameter name="rect" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible_rect"
+              c:identifier="gtk_tree_view_get_visible_rect"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible_rect" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="widget_to_tree_coords"
+              c:identifier="gtk_tree_view_widget_to_tree_coords"
+              doc="Converts bin_window coordinates to coordinates for the
+tree (the full scrollable area of the tree).
+incorrect.  For converting coordinates relative to the widget to
+bin_window coordinates, please see
+gtk_tree_view_convert_widget_to_bin_window_coords()."
+              deprecated="Due to historial reasons the name of this function is"
+              deprecated-version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="wy" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="tx" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="ty" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="tree_to_widget_coords"
+              c:identifier="gtk_tree_view_tree_to_widget_coords"
+              doc="Converts tree coordinates (coordinates in full scrollable area of the tree)
+to bin_window coordinates.
+incorrect.  For converting bin_window coordinates to coordinates relative
+to bin_window, please see
+gtk_tree_view_convert_bin_window_to_widget_coords()."
+              deprecated="Due to historial reasons the name of this function is"
+              deprecated-version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="ty" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="wx" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="wy" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible_range"
+              c:identifier="gtk_tree_view_get_visible_range"
+              doc="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."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Return location for start of region, or %NULL.">
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="end_path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Return location for end of region, or %NULL.">
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enable_model_drag_source"
+              c:identifier="gtk_tree_view_enable_model_drag_source"
+              doc="widget
+Turns @tree_view into a drag source for automatic DND. Calling this
+method sets #GtkTreeView:reorderable to %FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_button_mask" transfer-ownership="none">
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+          <parameter name="targets" transfer-ownership="none">
+            <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+          </parameter>
+          <parameter name="n_targets" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="actions" transfer-ownership="none">
+            <type name="Gdk.DragAction" c:type="GdkDragAction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="enable_model_drag_dest"
+              c:identifier="gtk_tree_view_enable_model_drag_dest"
+              doc="widget
+Turns @tree_view into a drop destination for automatic DND. Calling
+this method sets #GtkTreeView:reorderable to %FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="targets" transfer-ownership="none">
+            <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+          </parameter>
+          <parameter name="n_targets" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="actions" transfer-ownership="none">
+            <type name="Gdk.DragAction" c:type="GdkDragAction"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unset_rows_drag_source"
+              c:identifier="gtk_tree_view_unset_rows_drag_source"
+              doc="Undoes the effect of
+gtk_tree_view_enable_model_drag_source(). Calling this method sets
+#GtkTreeView:reorderable to %FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unset_rows_drag_dest"
+              c:identifier="gtk_tree_view_unset_rows_drag_dest"
+              doc="Undoes the effect of
+gtk_tree_view_enable_model_drag_dest(). Calling this method sets
+#GtkTreeView:reorderable to %FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_drag_dest_row"
+              c:identifier="gtk_tree_view_set_drag_dest_row"
+              doc="Sets the row that is highlighted for feedback.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="The path of the row to highlight, or %NULL.">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="pos" transfer-ownership="none">
+            <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="Gets information about the row that is highlighted for feedback.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Return location for the path of the highlighted row, or %NULL.">
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="pos"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Return location for the drop position, or %NULL">
+            <type name="TreeViewDropPosition"
+                  c:type="GtkTreeViewDropPosition*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_dest_row_at_pos"
+              c:identifier="gtk_tree_view_get_dest_row_at_pos"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="drag_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="drag_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Return location for the path of the highlighted row, or %NULL.">
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="pos"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="Return location for the drop position, or %NULL">
+            <type name="TreeViewDropPosition"
+                  c:type="GtkTreeViewDropPosition*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_row_drag_icon"
+              c:identifier="gtk_tree_view_create_row_drag_icon"
+              doc="Creates a #GdkPixmap representation of the row at @path.
+This image is used for a drag icon.">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_enable_search"
+              c:identifier="gtk_tree_view_set_enable_search"
+              doc="If @enable_search is set, then the user can type in text to search through
+the tree interactively (this is sometimes called &quot;typeahead find&quot;).
+Note that even if this is %FALSE, the user can still initiate a search
+using the &quot;start-interactive-search&quot; key binding.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="enable_search" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_enable_search"
+              c:identifier="gtk_tree_view_get_enable_search"
+              doc="Returns whether or not the tree allows to start interactive searching
+by typing in text.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_search_column"
+              c:identifier="gtk_tree_view_get_search_column"
+              doc="Gets the column searched on by the interactive search code.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_search_column"
+              c:identifier="gtk_tree_view_set_search_column"
+              doc="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 &quot;start-interactive-search&quot;
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_search_equal_func"
+              c:identifier="gtk_tree_view_get_search_equal_func"
+              doc="Returns the compare function currently in use.">
+        <return-value transfer-ownership="full">
+          <type name="TreeViewSearchEqualFunc"
+                c:type="GtkTreeViewSearchEqualFunc"/>
+        </return-value>
+      </method>
+      <method name="set_search_equal_func"
+              c:identifier="gtk_tree_view_set_search_equal_func"
+              doc="Sets the compare function for the interactive search capabilities; note
+that somewhat like strcmp() returning 0 for equality
+#GtkTreeViewSearchEqualFunc returns %FALSE on matches.">
+        <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="2"
+                     destroy="3">
+            <type name="TreeViewSearchEqualFunc"
+                  c:type="GtkTreeViewSearchEqualFunc"/>
+          </parameter>
+          <parameter name="search_user_data"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="user data to pass to @search_equal_func, or %NULL">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="search_destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="call"
+                     doc="Destroy notifier for @search_user_data, or %NULL">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_search_entry"
+              c:identifier="gtk_tree_view_get_search_entry"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="Entry" c:type="GtkEntry*"/>
+        </return-value>
+      </method>
+      <method name="set_search_entry"
+              c:identifier="gtk_tree_view_set_search_entry"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="entry"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the entry the interactive search code of @tree_view should use or %NULL">
+            <type name="Entry" c:type="GtkEntry*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_search_position_func"
+              c:identifier="gtk_tree_view_get_search_position_func"
+              doc="Returns the positioning function currently in use."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="TreeViewSearchPositionFunc"
+                c:type="GtkTreeViewSearchPositionFunc"/>
+        </return-value>
+      </method>
+      <method name="set_search_position_func"
+              c:identifier="gtk_tree_view_set_search_position_func"
+              doc="to use the default search position function
+Sets the function to use when positioning the search dialog."
+              version="2.10">
+        <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="2"
+                     destroy="3"
+                     doc="the function to use to position the search dialog, or %NULL">
+            <type name="TreeViewSearchPositionFunc"
+                  c:type="GtkTreeViewSearchPositionFunc"/>
+          </parameter>
+          <parameter name="data"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="user data to pass to @func, or %NULL">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="call"
+                     doc="Destroy notifier for @data, or %NULL">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_widget_to_tree_coords"
+              c:identifier="gtk_tree_view_convert_widget_to_tree_coords"
+              doc="Converts widget coordinates to coordinates for the
+tree (the full scrollable area of the tree)."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="wy" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="tx" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="ty" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_tree_to_widget_coords"
+              c:identifier="gtk_tree_view_convert_tree_to_widget_coords"
+              doc="Converts tree coordinates (coordinates in full scrollable area of the tree)
+to widget coordinates."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="ty" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="wx" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="wy" direction="out" transfer-ownership="full">
+            <type name="int" 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"
+              doc="Converts widget coordinates to coordinates for the bin_window
+(see gtk_tree_view_get_bin_window())."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="wy" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="bx" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="by" direction="out" transfer-ownership="full">
+            <type name="int" 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"
+              doc="Converts bin_window coordinates (see gtk_tree_view_get_bin_window())
+to widget relative coordinates."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="by" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="wx" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="wy" direction="out" transfer-ownership="full">
+            <type name="int" 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"
+              doc="Converts tree coordinates (coordinates in full scrollable area of the tree)
+to bin_window coordinates."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="ty" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="bx" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="by" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="convert_bin_window_to_tree_coords"
+              c:identifier="gtk_tree_view_convert_bin_window_to_tree_coords"
+              doc="Converts bin_window coordinates to coordinates for the
+tree (the full scrollable area of the tree)."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bx" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="by" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="tx" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="ty" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_destroy_count_func"
+              c:identifier="gtk_tree_view_set_destroy_count_func"
+              doc="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.">
+        <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="2"
+                     destroy="3"
+                     doc="Function to be called when a view row is destroyed, or %NULL">
+            <type name="TreeDestroyCountFunc"
+                  c:type="GtkTreeDestroyCountFunc"/>
+          </parameter>
+          <parameter name="data"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="User data to be passed to @func, or %NULL">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="call"
+                     doc="Destroy notifier for @data, or %NULL">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_fixed_height_mode"
+              c:identifier="gtk_tree_view_set_fixed_height_mode"
+              doc="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."
+              version="2.6">
+        <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="get_fixed_height_mode"
+              c:identifier="gtk_tree_view_get_fixed_height_mode"
+              doc="Returns whether fixed height mode is turned on for @tree_view."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_hover_selection"
+              c:identifier="gtk_tree_view_set_hover_selection"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hover" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_hover_selection"
+              c:identifier="gtk_tree_view_get_hover_selection"
+              doc="Returns whether hover selection mode is turned on for @tree_view."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_hover_expand"
+              c:identifier="gtk_tree_view_set_hover_expand"
+              doc="Enables of disables the hover expansion mode of @tree_view.
+Hover expansion makes rows expand or collapse if the pointer
+moves over them."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_hover_expand"
+              c:identifier="gtk_tree_view_get_hover_expand"
+              doc="Returns whether hover expansion mode is turned on for @tree_view."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_rubber_banding"
+              c:identifier="gtk_tree_view_set_rubber_banding"
+              doc="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."
+              version="2.10">
+        <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="get_rubber_banding"
+              c:identifier="gtk_tree_view_get_rubber_banding"
+              doc="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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_rubber_banding_active"
+              c:identifier="gtk_tree_view_is_rubber_banding_active"
+              doc="Returns whether a rubber banding operation is currently being done
+in @tree_view.
+done in @tree_view."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_row_separator_func"
+              c:identifier="gtk_tree_view_get_row_separator_func"
+              doc="Returns the current row separator function."
+              version="2.6">
+        <return-value transfer-ownership="full">
+          <type name="TreeViewRowSeparatorFunc"
+                c:type="GtkTreeViewRowSeparatorFunc"/>
+        </return-value>
+      </method>
+      <method name="set_row_separator_func"
+              c:identifier="gtk_tree_view_set_row_separator_func"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="2"
+                     destroy="3">
+            <type name="TreeViewRowSeparatorFunc"
+                  c:type="GtkTreeViewRowSeparatorFunc"/>
+          </parameter>
+          <parameter name="data"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="user data to pass to @func, or %NULL">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     scope="call"
+                     doc="destroy notifier for @data, or %NULL">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_grid_lines"
+              c:identifier="gtk_tree_view_get_grid_lines"
+              doc="Returns which grid lines are enabled in @tree_view.
+are enabled."
+              version="2.10">
+        <return-value transfer-ownership="full">
+          <type name="TreeViewGridLines" c:type="GtkTreeViewGridLines"/>
+        </return-value>
+      </method>
+      <method name="set_grid_lines"
+              c:identifier="gtk_tree_view_set_grid_lines"
+              doc="enable.
+Sets which grid lines to draw in @tree_view."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="grid_lines" transfer-ownership="none">
+            <type name="TreeViewGridLines" c:type="GtkTreeViewGridLines"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_enable_tree_lines"
+              c:identifier="gtk_tree_view_get_enable_tree_lines"
+              doc="Returns whether or not tree lines are drawn in @tree_view.
+otherwise."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_enable_tree_lines"
+              c:identifier="gtk_tree_view_set_enable_tree_lines"
+              doc="Sets whether to draw lines interconnecting the expanders in @tree_view.
+This does not have any visible effects for lists."
+              version="2.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>
+      </method>
+      <method name="set_show_expanders"
+              c:identifier="gtk_tree_view_set_show_expanders"
+              doc="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."
+              version="2.12">
+        <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="get_show_expanders"
+              c:identifier="gtk_tree_view_get_show_expanders"
+              doc="Returns whether or not expanders are drawn in @tree_view.
+otherwise."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_level_indentation"
+              c:identifier="gtk_tree_view_set_level_indentation"
+              doc="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."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="indentation" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_level_indentation"
+              c:identifier="gtk_tree_view_get_level_indentation"
+              doc="Returns the amount, in pixels, of extra indentation for child levels
+in @tree_view."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_tooltip_row"
+              c:identifier="gtk_tree_view_set_tooltip_row"
+              doc="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()."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tooltip" transfer-ownership="none">
+            <type name="Tooltip" c:type="GtkTooltip*"/>
+          </parameter>
+          <parameter name="path" transfer-ownership="none">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_cell"
+              c:identifier="gtk_tree_view_set_tooltip_cell"
+              doc="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."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tooltip" transfer-ownership="none">
+            <type name="Tooltip" c:type="GtkTooltip*"/>
+          </parameter>
+          <parameter name="path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkTreePath or %NULL">
+            <type name="TreePath" c:type="GtkTreePath*"/>
+          </parameter>
+          <parameter name="column"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkTreeViewColumn or %NULL">
+            <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+          </parameter>
+          <parameter name="cell"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkCellRenderer or %NULL">
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tooltip_context"
+              c:identifier="gtk_tree_view_get_tooltip_context"
+              doc="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&apos;s bin_window if @keyboard_tooltip is %FALSE."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="keyboard_tip" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="model"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a pointer to receive a #GtkTreeModel or %NULL">
+            <type name="TreeModel" c:type="GtkTreeModel**"/>
+          </parameter>
+          <parameter name="path"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a pointer to receive a #GtkTreePath or %NULL">
+            <type name="TreePath" c:type="GtkTreePath**"/>
+          </parameter>
+          <parameter name="iter"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a pointer to receive a #GtkTreeIter or %NULL">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_column"
+              c:identifier="gtk_tree_view_set_tooltip_column"
+              doc="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&apos;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."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tooltip_column"
+              c:identifier="gtk_tree_view_get_tooltip_column"
+              doc="Returns the column of @tree_view&apos;s model which is being used for
+displaying tooltips on @tree_view&apos;s rows.
+used, or -1 if this is disabled."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <property name="enable-grid-lines" writable="1">
+        <type name="TreeViewGridLines" c:type="GtkTreeViewGridLines"/>
+      </property>
+      <property name="enable-search" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="enable-tree-lines" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="expander-column" writable="1">
+        <type name="TreeViewColumn" c:type="GtkTreeViewColumn"/>
+      </property>
+      <property name="fixed-height-mode"
+                version="2.4"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="hadjustment" writable="1">
+        <type name="Adjustment" c:type="GtkAdjustment"/>
+      </property>
+      <property name="headers-clickable" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="headers-visible" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="hover-expand"
+                version="2.6"
+                writable="1"
+                doc="Enables of 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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="hover-selection"
+                version="2.6"
+                writable="1"
+                doc="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.
+This mode is primarily intended for treeviews in popups, e.g.
+in #GtkComboBox or #GtkEntryCompletion.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="level-indentation"
+                version="2.12"
+                writable="1"
+                doc="Extra indentation for each level.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="model" writable="1">
+        <type name="TreeModel" c:type="GtkTreeModel"/>
+      </property>
+      <property name="reorderable" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="rubber-banding" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="rules-hint" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="search-column" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="show-expanders"
+                version="2.12"
+                writable="1"
+                doc="%TRUE if the view has expanders.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="tooltip-column" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="vadjustment" writable="1">
+        <type name="Adjustment" c:type="GtkAdjustment"/>
+      </property>
+      <field name="parent">
+        <type name="Container" c:type="GtkContainer"/>
+      </field>
+      <field name="priv">
+        <type name="TreeViewPrivate" c:type="GtkTreeViewPrivate*"/>
+      </field>
+      <glib:signal name="columns-changed"
+                   doc="The number of columns of the treeview has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="cursor-changed"
+                   doc="The position of the cursor (focused cell) has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="expand-collapse-cursor-row">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="p1" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-cursor">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="MovementStep" c:type="GtkMovementStep"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="row-activated"
+                   doc="The &quot;row-activated&quot; 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=&quot;TreeWidget&quot;&gt;tree
+widget conceptual overview&lt;/link&gt; as well as #GtkTreeSelection.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </glib:signal>
+      <glib:signal name="row-collapsed"
+                   doc="The given row has been collapsed (child nodes are hidden).">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </glib:signal>
+      <glib:signal name="row-expanded"
+                   doc="The given row has been expanded (child nodes are shown).">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </glib:signal>
+      <glib:signal name="select-all">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="select-cursor-parent">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="select-cursor-row">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="set-scroll-adjustments">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Adjustment" c:type="GtkAdjustment"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="Adjustment" c:type="GtkAdjustment"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="start-interactive-search">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="test-collapse-row"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <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>
+      </glib:signal>
+      <glib:signal name="test-expand-row"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <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>
+      </glib:signal>
+      <glib:signal name="toggle-cursor-row">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unselect-all">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="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"
+                  c:type="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" c:type="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" c:type="test_expand_row">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="test_collapse_row">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="move_cursor">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="int" c:type="gint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_all">
+        <callback name="select_all" c:type="select_all">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="unselect_all">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="select_cursor_row">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="toggle_cursor_row">
+        <callback name="toggle_cursor_row" c:type="toggle_cursor_row">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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"
+                  c:type="expand_collapse_cursor_row">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="boolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="expand" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="open_all" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="select_cursor_parent">
+        <callback name="select_cursor_parent" c:type="select_cursor_parent">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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"
+                  c:type="start_interactive_search">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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">
+        <callback name="gtk_reserved0" c:type="_gtk_reserved0">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="TreeViewColumn"
+           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="Creates a new #GtkTreeViewColumn.">
+        <return-value transfer-ownership="full">
+          <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+        </return-value>
+      </constructor>
+      <constructor name="new_with_attributes"
+                   c:identifier="gtk_tree_view_column_new_with_attributes"
+                   doc="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&apos;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 (&quot;Title&quot;,
+renderer,
+&quot;text&quot;, TEXT_COLUMN,
+&quot;foreground&quot;, COLOR_COLUMN,
+NULL);
+}
+]|">
+        <return-value transfer-ownership="full">
+          <type name="TreeViewColumn" c:type="GtkTreeViewColumn*"/>
+        </return-value>
+        <parameters>
+          <parameter name="title" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="cell" transfer-ownership="none">
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="pack_start"
+              c:identifier="gtk_tree_view_column_pack_start"
+              doc="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.">
+        <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="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="pack_end"
+              c:identifier="gtk_tree_view_column_pack_end"
+              doc="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.">
+        <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="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear"
+              c:identifier="gtk_tree_view_column_clear"
+              doc="Unsets all the mappings on all renderers on the @tree_column.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_cell_renderers"
+              c:identifier="gtk_tree_view_column_get_cell_renderers"
+              doc="Returns a newly-allocated #GList of all the cell renderers in the column,
+in no particular order.  The list must be freed with g_list_free()."
+              deprecated="use gtk_cell_layout_get_cells() instead."
+              deprecated-version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="add_attribute"
+              c:identifier="gtk_tree_view_column_add_attribute"
+              doc="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
+&quot;text&quot; attribute of a #GtkCellRendererText get its values from
+column 2.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell_renderer" transfer-ownership="none">
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="attribute" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="column" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_attributes"
+              c:identifier="gtk_tree_view_column_set_attributes"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell_renderer" transfer-ownership="none">
+            <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="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&apos;s
+cell renderer as appropriate.  @func may be %NULL to remove an
+older one.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell_renderer" transfer-ownership="none">
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="notified"
+                     closure="3"
+                     destroy="4">
+            <type name="TreeCellDataFunc" c:type="GtkTreeCellDataFunc"/>
+          </parameter>
+          <parameter name="func_data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="destroy" transfer-ownership="none" scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="clear_attributes"
+              c:identifier="gtk_tree_view_column_clear_attributes"
+              doc="Clears all existing attributes previously set with
+gtk_tree_view_column_set_attributes().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell_renderer" transfer-ownership="none">
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_spacing"
+              c:identifier="gtk_tree_view_column_set_spacing"
+              doc="Sets the spacing field of @tree_column, which is the number of pixels to
+place between cell renderers packed into it.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_spacing"
+              c:identifier="gtk_tree_view_column_get_spacing"
+              doc="Returns the spacing of @tree_column.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_visible"
+              c:identifier="gtk_tree_view_column_set_visible"
+              doc="Sets the visibility of @tree_column.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible"
+              c:identifier="gtk_tree_view_column_get_visible"
+              doc="Returns %TRUE if @tree_column is visible.
+the tree will show the column.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_resizable"
+              c:identifier="gtk_tree_view_column_set_resizable"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resizable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_resizable"
+              c:identifier="gtk_tree_view_column_get_resizable"
+              doc="Returns %TRUE if the @tree_column can be resized by the end user.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_sizing"
+              c:identifier="gtk_tree_view_column_set_sizing"
+              doc="Sets the growth behavior of @tree_column to @type.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="TreeViewColumnSizing"
+                  c:type="GtkTreeViewColumnSizing"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sizing"
+              c:identifier="gtk_tree_view_column_get_sizing"
+              doc="Returns the current type of @tree_column.">
+        <return-value transfer-ownership="full">
+          <type name="TreeViewColumnSizing" c:type="GtkTreeViewColumnSizing"/>
+        </return-value>
+      </method>
+      <method name="get_width"
+              c:identifier="gtk_tree_view_column_get_width"
+              doc="Returns the current size of @tree_column in pixels.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_fixed_width"
+              c:identifier="gtk_tree_view_column_get_fixed_width"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_fixed_width"
+              c:identifier="gtk_tree_view_column_set_fixed_width"
+              doc="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&apos;t actually affect the &quot;fixed_width&quot; property of the widget, just
+the actual size when displayed.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="fixed_width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_min_width"
+              c:identifier="gtk_tree_view_column_set_min_width"
+              doc="Sets the minimum width of the @tree_column.  If @min_width is -1, then the
+minimum width is unset.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="min_width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_min_width"
+              c:identifier="gtk_tree_view_column_get_min_width"
+              doc="Returns the minimum width in pixels of the @tree_column, or -1 if no minimum
+width is set.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_max_width"
+              c:identifier="gtk_tree_view_column_set_max_width"
+              doc="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&apos;s the last column in a view.  In this case, the column expands to
+fill any extra space.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="max_width" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_max_width"
+              c:identifier="gtk_tree_view_column_get_max_width"
+              doc="Returns the maximum width in pixels of the @tree_column, or -1 if no maximum
+width is set.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="clicked"
+              c:identifier="gtk_tree_view_column_clicked"
+              doc="Emits the &quot;clicked&quot; signal on the column.  This function will only work if">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_title"
+              c:identifier="gtk_tree_view_column_set_title"
+              doc="Sets the title of the @tree_column.  If a custom widget has been set, then
+this value is ignored.">
+        <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="get_title"
+              c:identifier="gtk_tree_view_column_get_title"
+              doc="Returns the title of the widget.
+modified or freed.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_expand"
+              c:identifier="gtk_tree_view_column_set_expand"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="expand" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_expand"
+              c:identifier="gtk_tree_view_column_get_expand"
+              doc="Return %TRUE if the column expands to take any available space."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_clickable"
+              c:identifier="gtk_tree_view_column_set_clickable"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="clickable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_clickable"
+              c:identifier="gtk_tree_view_column_get_clickable"
+              doc="Returns %TRUE if the user can click on the header for the column.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_widget"
+              c:identifier="gtk_tree_view_column_set_widget"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="A child #GtkWidget, or %NULL.">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_widget"
+              c:identifier="gtk_tree_view_column_get_widget"
+              doc="Returns the #GtkWidget in the button on the column header.  If a custom
+widget has not been set then %NULL is returned.">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_alignment"
+              c:identifier="gtk_tree_view_column_set_alignment"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="xalign" transfer-ownership="none">
+            <type name="float" c:type="gfloat"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_alignment"
+              c:identifier="gtk_tree_view_column_get_alignment"
+              doc="Returns the current x alignment of @tree_column.  This value can range
+between 0.0 and 1.0.">
+        <return-value transfer-ownership="none">
+          <type name="float" c:type="gfloat"/>
+        </return-value>
+      </method>
+      <method name="set_reorderable"
+              c:identifier="gtk_tree_view_column_set_reorderable"
+              doc="If @reorderable is %TRUE, then the column can be reordered by the end user
+dragging the header.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="reorderable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_reorderable"
+              c:identifier="gtk_tree_view_column_get_reorderable"
+              doc="Returns %TRUE if the @tree_column can be reordered by the user.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_sort_column_id"
+              c:identifier="gtk_tree_view_column_set_sort_column_id"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sort_column_id" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sort_column_id"
+              c:identifier="gtk_tree_view_column_get_sort_column_id"
+              doc="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&apos;t be used for sorting.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_sort_indicator"
+              c:identifier="gtk_tree_view_column_set_sort_indicator"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sort_indicator"
+              c:identifier="gtk_tree_view_column_get_sort_indicator"
+              doc="Gets the value set by gtk_tree_view_column_set_sort_indicator().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_sort_order"
+              c:identifier="gtk_tree_view_column_set_sort_order"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="order" transfer-ownership="none">
+            <type name="SortType" c:type="GtkSortType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sort_order"
+              c:identifier="gtk_tree_view_column_get_sort_order"
+              doc="Gets the value set by gtk_tree_view_column_set_sort_order().">
+        <return-value transfer-ownership="full">
+          <type name="SortType" c:type="GtkSortType"/>
+        </return-value>
+      </method>
+      <method name="cell_set_cell_data"
+              c:identifier="gtk_tree_view_column_cell_set_cell_data"
+              doc="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.">
+        <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">
+            <type name="TreeIter" c:type="GtkTreeIter*"/>
+          </parameter>
+          <parameter name="is_expander" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="is_expanded" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="cell_get_size"
+              c:identifier="gtk_tree_view_column_cell_get_size"
+              doc="Obtains the width and height needed to render the column.  This is used
+primarily by the #GtkTreeView.">
+        <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="The area a cell in the column will be allocated, or %NULL">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="x_offset"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to return x offset of a cell relative to @cell_area, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y_offset"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to return y offset of a cell relative to @cell_area, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="width"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to return width needed to render a cell, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to return height needed to render a cell, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="cell_is_visible"
+              c:identifier="gtk_tree_view_column_cell_is_visible"
+              doc="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()">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="focus_cell"
+              c:identifier="gtk_tree_view_column_focus_cell"
+              doc="Sets the current keyboard focus to be at @cell, if the column contains
+2 or more editable and activatable cells."
+              version="2.2">
+        <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>
+      </method>
+      <method name="cell_get_position"
+              c:identifier="gtk_tree_view_column_cell_get_position"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="cell_renderer" transfer-ownership="none">
+            <type name="CellRenderer" c:type="GtkCellRenderer*"/>
+          </parameter>
+          <parameter name="start_pos"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="width" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="queue_resize"
+              c:identifier="gtk_tree_view_column_queue_resize"
+              doc="Flags the column, and the cell renderers added to this column, to have
+their sizes renegotiated."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_tree_view"
+              c:identifier="gtk_tree_view_column_get_tree_view"
+              doc="Returns the #GtkTreeView wherein @tree_column has been inserted.  If
+returned.
+%NULL otherwise."
+              version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <property name="alignment" writable="1">
+        <type name="float" c:type="gfloat"/>
+      </property>
+      <property name="clickable" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="expand" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="fixed-width" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="max-width" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="min-width" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="reorderable" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="resizable" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="sizing" writable="1">
+        <type name="TreeViewColumnSizing" c:type="GtkTreeViewColumnSizing"/>
+      </property>
+      <property name="sort-column-id"
+                version="2.18"
+                writable="1"
+                doc="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.">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="sort-indicator" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="sort-order" writable="1">
+        <type name="SortType" c:type="GtkSortType"/>
+      </property>
+      <property name="spacing" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="title" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="visible" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="widget" writable="1">
+        <type name="Widget" c:type="GtkWidget"/>
+      </property>
+      <property name="width">
+        <type name="int" c:type="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="float" c:type="gfloat"/>
+      </field>
+      <field name="property_changed_signal">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="spacing">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="column_type">
+        <type name="TreeViewColumnSizing" c:type="GtkTreeViewColumnSizing"/>
+      </field>
+      <field name="requested_width">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="button_request">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="resized_width">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="width">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="fixed_width">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="min_width">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="max_width">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="drag_x">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="drag_y">
+        <type name="int" 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*"/>
+      </field>
+      <field name="sort_clicked_signal">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="sort_column_changed_signal">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="sort_column_id">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="sort_order">
+        <type name="SortType" c:type="GtkSortType"/>
+      </field>
+      <field name="visible" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="resizable" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="clickable" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="dirty" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="show_sort_indicator" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="maybe_reordered" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="reorderable" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="use_resized_width" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="expand" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <glib:signal name="clicked">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_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="boolean" 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="any" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <enumeration name="TreeViewMode"
+                 glib:type-name="GtkTreeViewMode"
+                 glib:get-type="gtk_tree_view_mode_get_type"
+                 c:type="GtkTreeViewMode">
+      <member name="line"
+              value="0"
+              c:identifier="GTK_TREE_VIEW_LINE"
+              glib:nick="line"/>
+      <member name="item"
+              value="1"
+              c:identifier="GTK_TREE_VIEW_ITEM"
+              glib:nick="item"/>
+    </enumeration>
+    <record name="TreeViewPrivate" c:type="GtkTreeViewPrivate">
+    </record>
+    <callback name="TreeViewRowSeparatorFunc"
+              c:type="GtkTreeViewRowSeparatorFunc">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="TreeViewSearchEqualFunc"
+              c:type="GtkTreeViewSearchEqualFunc">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="int" 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="any" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <record name="TypeInfo" c:type="GtkTypeInfo">
+      <field name="type_name" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="object_size" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="class_size" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="class_init_func" writable="1">
+        <type name="ClassInitFunc" c:type="GtkClassInitFunc"/>
+      </field>
+      <field name="object_init_func" writable="1">
+        <type name="ObjectInitFunc" c:type="GtkObjectInitFunc"/>
+      </field>
+      <field name="reserved_1" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="reserved_2" writable="1">
+        <type name="any" c:type="gpointer"/>
+      </field>
+      <field name="base_class_init_func" writable="1">
+        <type name="ClassInitFunc" c:type="GtkClassInitFunc"/>
+      </field>
+    </record>
+    <class name="UIManager"
+           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"
+                   doc="Creates a new ui manager object."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="UIManager" c:type="GtkUIManager*"/>
+        </return-value>
+      </constructor>
+      <virtual-method name="get_widget" invoker="get_widget">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="get_action" invoker="get_action">
+        <return-value transfer-ownership="full">
+          <type name="Action" c:type="GtkAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="set_add_tearoffs"
+              c:identifier="gtk_ui_manager_set_add_tearoffs"
+              doc="Sets the &quot;add_tearoffs&quot; 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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="add_tearoffs" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_add_tearoffs"
+              c:identifier="gtk_ui_manager_get_add_tearoffs"
+              doc="Returns whether menus generated by this #GtkUIManager
+will have tearoff menu items."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="insert_action_group"
+              c:identifier="gtk_ui_manager_insert_action_group"
+              doc="Inserts an action group into the list of action groups associated
+with @self. Actions in earlier groups hide actions with the same
+name in later groups."
+              version="2.4">
+        <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="GtkActionGroup*"/>
+          </parameter>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_action_group"
+              c:identifier="gtk_ui_manager_remove_action_group"
+              doc="Removes an action group from the list of action groups associated
+with @self."
+              version="2.4">
+        <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="GtkActionGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_action_groups"
+              c:identifier="gtk_ui_manager_get_action_groups"
+              doc="Returns the list of action groups associated with @self.
+action groups. The list is owned by GTK+
+and should not be modified."
+              version="2.4">
+        <return-value transfer-ownership="none" doc="a #GList of">
+          <type name="GLib.List" c:type="GList*">
+            <type name="ActionGroup"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_accel_group"
+              c:identifier="gtk_ui_manager_get_accel_group"
+              doc="Returns the #GtkAccelGroup associated with @self."
+              version="2.4">
+        <return-value transfer-ownership="none" doc="the #GtkAccelGroup.">
+          <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+        </return-value>
+      </method>
+      <method name="get_widget"
+              c:identifier="gtk_ui_manager_get_widget"
+              doc="Looks up a widget by following a path.
+The path consists of the names specified in the XML description of the UI.
+separated by &apos;/&apos;. Elements which don&apos;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. &quot;popup&quot;). The root element (&quot;/ui&quot;) 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 itself.
+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."
+              version="2.4">
+        <return-value transfer-ownership="none"
+                      doc="the widget found by following the path, or %NULL if no widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_toplevels"
+              c:identifier="gtk_ui_manager_get_toplevels"
+              doc="types are #GTK_UI_MANAGER_MENUBAR, #GTK_UI_MANAGER_TOOLBAR and
+#GTK_UI_MANAGER_POPUP.
+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()."
+              version="2.4">
+        <return-value transfer-ownership="container"
+                      doc="a newly-allocated #GSList of">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Widget"/>
+          </type>
+        </return-value>
+        <parameters>
+          <parameter name="types" transfer-ownership="none">
+            <type name="UIManagerItemType" c:type="GtkUIManagerItemType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_action"
+              c:identifier="gtk_ui_manager_get_action"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="Action" c:type="GtkAction*"/>
+        </return-value>
+        <parameters>
+          <parameter name="path" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_ui_from_string"
+              c:identifier="gtk_ui_manager_add_ui_from_string"
+              doc="Parses a string containing a &lt;link linkend=&quot;XML-UI&quot;&gt;UI definition&lt;/link&gt; and
+merges it with the current contents of @self. 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."
+              version="2.4"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="buffer" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="ssize_t" c:type="gssize"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_ui_from_file"
+              c:identifier="gtk_ui_manager_add_ui_from_file"
+              doc="Parses a file containing a &lt;link linkend=&quot;XML-UI&quot;&gt;UI definition&lt;/link&gt; and
+merges it with the current contents of @self.
+to unmerge the UI with gtk_ui_manager_remove_ui(). If an error occurred,
+the return value is 0."
+              version="2.4"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_ui"
+              c:identifier="gtk_ui_manager_add_ui"
+              doc="is added after its siblings.
+Adds a UI element to the current contents of @self.
+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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="merge_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="path" 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="action"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the name of the action to be proxied, or %NULL to add a separator">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="type" transfer-ownership="none">
+            <type name="UIManagerItemType" c:type="GtkUIManagerItemType"/>
+          </parameter>
+          <parameter name="top" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_ui"
+              c:identifier="gtk_ui_manager_remove_ui"
+              doc="Unmerges the part of @self&lt;!-- --&gt;s content identified by @merge_id."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="merge_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ui"
+              c:identifier="gtk_ui_manager_get_ui"
+              doc="Creates a &lt;link linkend=&quot;XML-UI&quot;&gt;UI definition&lt;/link&gt; of the merged UI.
+the merged UI."
+              version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="ensure_update"
+              c:identifier="gtk_ui_manager_ensure_update"
+              doc="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, &quot;add-widget&quot;,
+G_CALLBACK (add_widget), vbox);
+gtk_ui_manager_add_ui_from_file (merge, &quot;my-menus&quot;);
+gtk_ui_manager_add_ui_from_file (merge, &quot;my-toolbars&quot;);
+gtk_ui_manager_ensure_update (merge);
+gtk_widget_show (window);
+]|"
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="new_merge_id"
+              c:identifier="gtk_ui_manager_new_merge_id"
+              doc="Returns an unused merge id, suitable for use with
+gtk_ui_manager_add_ui()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <property name="add-tearoffs"
+                version="2.4"
+                writable="1"
+                doc="The &quot;add-tearoffs&quot; property controls whether generated menus
+have tearoff menu items.
+Note that this only affects regular menus. Generated popup
+menus never have tearoff menu items.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="ui">
+        <type name="utf8" c:type="gchararray"/>
+      </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"
+                   doc="The &quot;actions-changed&quot; signal is emitted whenever the set of actions
+changes."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="add-widget"
+                   doc="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()."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="connect-proxy"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <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>
+      </glib:signal>
+      <glib:signal name="disconnect-proxy"
+                   doc="The disconnect_proxy signal is emitted after disconnecting a proxy
+from an action in the group."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <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>
+      </glib:signal>
+      <glib:signal name="post-activate"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <type name="Action" c:type="GtkAction"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="pre-activate"
+                   doc="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."
+                   version="2.4">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="action" transfer-ownership="none">
+            <type name="Action" c:type="GtkAction"/>
+          </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" c:type="add_widget">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="merge" 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" c:type="actions_changed">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="merge" transfer-ownership="none">
+              <type name="UIManager" c:type="GtkUIManager*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="connect_proxy">
+        <callback name="connect_proxy" c:type="connect_proxy">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="merge" 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" c:type="disconnect_proxy">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="merge" 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" c:type="pre_activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="merge" 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" c:type="post_activate">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+          <parameters>
+            <parameter name="merge" 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" c:type="get_widget">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="get_action">
+        <callback name="get_action" c:type="get_action">
+          <return-value transfer-ownership="full">
+            <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">
+              <type name="utf8" c:type="gchar*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved1">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_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">
+    </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: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"/>
+      <constructor name="new"
+                   c:identifier="gtk_vbox_new"
+                   doc="Creates a new #GtkVBox.">
+        <return-value transfer-ownership="full">
+          <type name="VBox" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="homogeneous" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="int" 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: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"/>
+      <constructor name="new" c:identifier="gtk_vbutton_box_new">
+        <return-value transfer-ownership="full">
+          <type name="VButtonBox" c:type="GtkWidget*"/>
+        </return-value>
+      </constructor>
+      <function name="get_spacing_default"
+                c:identifier="gtk_vbutton_box_get_spacing_default">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </function>
+      <function name="set_spacing_default"
+                c:identifier="gtk_vbutton_box_set_spacing_default">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_layout_default"
+                c:identifier="gtk_vbutton_box_get_layout_default">
+        <return-value transfer-ownership="full">
+          <type name="ButtonBoxStyle" c:type="GtkButtonBoxStyle"/>
+        </return-value>
+      </function>
+      <function name="set_layout_default"
+                c:identifier="gtk_vbutton_box_set_layout_default">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="layout" transfer-ownership="none">
+            <type name="ButtonBoxStyle" c:type="GtkButtonBoxStyle"/>
+          </parameter>
+        </parameters>
+      </function>
+      <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: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"/>
+      <constructor name="new" c:identifier="gtk_vpaned_new">
+        <return-value transfer-ownership="full">
+          <type name="VPaned" 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: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"/>
+      <constructor name="new" c:identifier="gtk_vruler_new">
+        <return-value transfer-ownership="full">
+          <type name="VRuler" 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:type="GtkVScale"
+           doc="The #GtkVScale struct contains private data only, and
+should be accessed using the functions below."
+           parent="Scale"
+           glib:type-name="GtkVScale"
+           glib:get-type="gtk_vscale_get_type"
+           glib:type-struct="VScaleClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <constructor name="new"
+                   c:identifier="gtk_vscale_new"
+                   doc="Creates a new #GtkVScale.">
+        <return-value transfer-ownership="full">
+          <type name="VScale" 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_vscale_new_with_range"
+                   doc="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&apos;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.">
+        <return-value transfer-ownership="full">
+          <type name="VScale" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="min" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="max" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+          <parameter name="step"
+                     transfer-ownership="none"
+                     doc="used with keyboard shortcuts">
+            <type name="double" 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:type="GtkVScrollbar"
+           doc="The #GtkVScrollbar struct contains private data and should be accessed
+using the functions below."
+           parent="Scrollbar"
+           glib:type-name="GtkVScrollbar"
+           glib:get-type="gtk_vscrollbar_get_type"
+           glib:type-struct="VScrollbarClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <constructor name="new"
+                   c:identifier="gtk_vscrollbar_new"
+                   doc="Creates a new vertical scrollbar.">
+        <return-value transfer-ownership="full">
+          <type name="VScrollbar" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the #GtkAdjustment to use, or %NULL to create a new adjustment">
+            <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:type="GtkVSeparator"
+           doc="The #GtkVSeparator struct contains private data only, and
+should be accessed using the functions below."
+           parent="Separator"
+           glib:type-name="GtkVSeparator"
+           glib:get-type="gtk_vseparator_get_type"
+           glib:type-struct="VSeparatorClass">
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <constructor name="new"
+                   c:identifier="gtk_vseparator_new"
+                   doc="Creates a new #GtkVSeparator.">
+        <return-value transfer-ownership="full">
+          <type name="VSeparator" 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: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"/>
+      <constructor name="new"
+                   c:identifier="gtk_viewport_new"
+                   doc="Creates a new #GtkViewport with the given adjustments.">
+        <return-value transfer-ownership="full">
+          <type name="Viewport" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <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>
+      </constructor>
+      <method name="get_hadjustment"
+              c:identifier="gtk_viewport_get_hadjustment"
+              doc="Returns the horizontal adjustment of the viewport.">
+        <return-value transfer-ownership="full">
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="get_vadjustment"
+              c:identifier="gtk_viewport_get_vadjustment"
+              doc="Returns the vertical adjustment of the viewport.">
+        <return-value transfer-ownership="full">
+          <type name="Adjustment" c:type="GtkAdjustment*"/>
+        </return-value>
+      </method>
+      <method name="set_hadjustment"
+              c:identifier="gtk_viewport_set_hadjustment"
+              doc="Sets the horizontal adjustment of the viewport.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkAdjustment.">
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_vadjustment"
+              c:identifier="gtk_viewport_set_vadjustment"
+              doc="Sets the vertical adjustment of the viewport.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="adjustment"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkAdjustment.">
+            <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="get_shadow_type"
+              c:identifier="gtk_viewport_get_shadow_type"
+              doc="Gets the shadow type of the #GtkViewport. See
+gtk_viewport_set_shadow_type().">
+        <return-value transfer-ownership="full">
+          <type name="ShadowType" c:type="GtkShadowType"/>
+        </return-value>
+      </method>
+      <method name="get_bin_window"
+              c:identifier="gtk_viewport_get_bin_window"
+              doc="Gets the bin window of the #GtkViewport."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <property name="hadjustment" writable="1" construct="1">
+        <type name="Adjustment" c:type="GtkAdjustment"/>
+      </property>
+      <property name="shadow-type" writable="1">
+        <type name="ShadowType" c:type="GtkShadowType"/>
+      </property>
+      <property name="vadjustment" writable="1" construct="1">
+        <type name="Adjustment" c:type="GtkAdjustment"/>
+      </property>
+      <field name="bin">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+      <field name="shadow_type">
+        <type name="ShadowType" c:type="GtkShadowType"/>
+      </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="hadjustment">
+        <type name="Adjustment" c:type="GtkAdjustment*"/>
+      </field>
+      <field name="vadjustment">
+        <type name="Adjustment" c:type="GtkAdjustment*"/>
+      </field>
+      <glib:signal name="set-scroll-adjustments">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Adjustment" c:type="GtkAdjustment"/>
+          </parameter>
+          <parameter name="p0" transfer-ownership="none">
+            <type name="Adjustment" c:type="GtkAdjustment"/>
+          </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"
+                  c:type="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>
+    <enumeration name="Visibility"
+                 glib:type-name="GtkVisibility"
+                 glib:get-type="gtk_visibility_get_type"
+                 c:type="GtkVisibility">
+      <member name="none"
+              value="0"
+              c:identifier="GTK_VISIBILITY_NONE"
+              glib:nick="none"/>
+      <member name="partial"
+              value="1"
+              c:identifier="GTK_VISIBILITY_PARTIAL"
+              glib:nick="partial"/>
+      <member name="full"
+              value="2"
+              c:identifier="GTK_VISIBILITY_FULL"
+              glib:nick="full"/>
+    </enumeration>
+    <class name="VolumeButton"
+           c:type="GtkVolumeButton"
+           parent="ScaleButton"
+           glib:type-name="GtkVolumeButton"
+           glib:get-type="gtk_volume_button_get_type"
+           glib:type-struct="VolumeButtonClass">
+      <implements name="Activatable"/>
+      <implements name="Atk.ImplementorIface"/>
+      <implements name="Buildable"/>
+      <implements name="Orientable"/>
+      <constructor name="new" c:identifier="gtk_volume_button_new">
+        <return-value transfer-ownership="full">
+          <type name="VolumeButton" 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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <class name="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"/>
+      <constructor name="new"
+                   c:identifier="gtk_widget_new"
+                   doc="%NULL-terminated
+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, &quot;label&quot;, &quot;Hello World&quot;, &quot;xalign&quot;,
+0.0, NULL)&lt;/literal&gt; to create a left-aligned label. Equivalent to
+g_object_new(), but returns a widget so you don&apos;t have to
+cast the object yourself.">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="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>
+      </constructor>
+      <function name="push_colormap"
+                c:identifier="gtk_widget_push_colormap"
+                doc="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&apos;s little
+reason to use this function.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="cmap" transfer-ownership="none">
+            <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="push_composite_child"
+                c:identifier="gtk_widget_push_composite_child"
+                doc="Makes all newly-created widgets as composite children until
+the corresponding gtk_widget_pop_composite_child() call.
+A composite child is a child that&apos;s an implementation detail of the
+container it&apos;s inside and should not be visible to people using the
+container. Composite children aren&apos;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, &quot;hscrollbar&quot;);
+gtk_widget_pop_composite_child ();
+gtk_widget_set_parent (scrolled_window-&gt;hscrollbar,
+GTK_WIDGET (scrolled_window));
+g_object_ref (scrolled_window-&gt;hscrollbar);
+]|">
+        <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="Cancels the effect of a previous call to gtk_widget_push_composite_child().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </function>
+      <function name="pop_colormap"
+                c:identifier="gtk_widget_pop_colormap"
+                doc="Removes a colormap pushed with gtk_widget_push_colormap().">
+        <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="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="colormap" transfer-ownership="none">
+            <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_default_style"
+                c:identifier="gtk_widget_get_default_style"
+                doc="Returns the default style used by all widgets initially.
+by GTK+ and should not be modified or freed.">
+        <return-value transfer-ownership="none"
+                      doc="the default style. This #GtkStyle object is owned">
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+      </function>
+      <function name="get_default_colormap"
+                c:identifier="gtk_widget_get_default_colormap"
+                doc="Obtains the default colormap used to create widgets.">
+        <return-value transfer-ownership="none" doc="default widget colormap">
+          <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </function>
+      <function name="get_default_visual"
+                c:identifier="gtk_widget_get_default_visual"
+                doc="Obtains the visual of the default colormap. Not really useful;
+used to be useful before gdk_colormap_get_visual() existed.">
+        <return-value transfer-ownership="none"
+                      doc="visual of the default colormap">
+          <type name="Gdk.Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </function>
+      <function name="set_default_direction"
+                c:identifier="gtk_widget_set_default_direction"
+                doc="%GTK_TEXT_DIR_NONE.
+Sets the default reading direction for widgets where the
+direction has not been explicitly set by gtk_widget_set_direction().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dir" transfer-ownership="none">
+            <type name="TextDirection" c:type="GtkTextDirection"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="get_default_direction"
+                c:identifier="gtk_widget_get_default_direction"
+                doc="Obtains the current default reading direction. See
+gtk_widget_set_default_direction().">
+        <return-value transfer-ownership="full">
+          <type name="TextDirection" c:type="GtkTextDirection"/>
+        </return-value>
+      </function>
+      <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="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="pspecs" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="show_all" invoker="show_all">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="hide_all" invoker="hide_all">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="get_accessible" invoker="get_accessible">
+        <return-value transfer-ownership="full">
+          <type name="Atk.Object" c:type="AtkObject*"/>
+        </return-value>
+      </virtual-method>
+      <method name="destroy"
+              c:identifier="gtk_widget_destroy"
+              doc="Destroys a widget. Equivalent to gtk_object_destroy(), except that
+you don&apos;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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="destroyed"
+              c:identifier="gtk_widget_destroyed"
+              doc="This function sets *@widget_pointer to %NULL if @widget_pointer !=
+%NULL.  It&apos;s intended to be used as a callback connected to the
+&quot;destroy&quot; 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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget_pointer"
+                     direction="inout"
+                     transfer-ownership="none"
+                     doc="address of a variable that contains @widget">
+            <type name="Widget" c:type="GtkWidget**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ref"
+              c:identifier="gtk_widget_ref"
+              doc="Adds a reference to a widget. This function is exactly the same
+as calling g_object_ref(), and exists mostly for historical
+reasons. It can still be convenient to avoid casting a widget
+to a #GObject, it saves a small amount of typing."
+              deprecated="Use g_object_ref() instead."
+              deprecated-version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="gtk_widget_unref"
+              doc="Inverse of gtk_widget_ref(). Equivalent to g_object_unref()."
+              deprecated="Use g_object_unref() instead."
+              deprecated-version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set"
+              c:identifier="gtk_widget_set"
+              doc="%NULL-terminated
+Precursor of g_object_set()."
+              deprecated="Use g_object_set() instead."
+              deprecated-version="2.0">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="unparent"
+              c:identifier="gtk_widget_unparent"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="show"
+              c:identifier="gtk_widget_show"
+              doc="Flags a widget to be displayed. Any widget that isn&apos;t shown will
+not appear on the screen. If you want to show all the widgets in a
+container, it&apos;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.">
+        <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="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="hide"
+              c:identifier="gtk_widget_hide"
+              doc="Reverses the effects of gtk_widget_show(), causing the widget to be
+hidden (invisible to the user).">
+        <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="Recursively shows a widget, and any child widgets (if the widget is
+a container).">
+        <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="Recursively hides a widget and any child widgets.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_no_show_all"
+              c:identifier="gtk_widget_set_no_show_all"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="no_show_all" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_no_show_all"
+              c:identifier="gtk_widget_get_no_show_all"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="map"
+              c:identifier="gtk_widget_map"
+              doc="This function is only for use in widget implementations. Causes
+a widget to be mapped if it isn&apos;t already.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unmap"
+              c:identifier="gtk_widget_unmap"
+              doc="This function is only for use in widget implementations. Causes
+a widget to be unmapped if it&apos;s currently mapped.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="realize"
+              c:identifier="gtk_widget_realize"
+              doc="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&apos;s parent widgets to be realized; calling
+gtk_widget_realize() realizes the widget&apos;s parents in addition to
+when you realize it, bad things will happen.
+This function is primarily used in widget implementations, and
+isn&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unrealize"
+              c:identifier="gtk_widget_unrealize"
+              doc="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).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="queue_draw"
+              c:identifier="gtk_widget_queue_draw"
+              doc="Equivalent to calling gtk_widget_queue_draw_area() for the
+entire area of a widget.">
+        <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="Invalidates the rectangular area of @widget defined by @x, @y,
+widget&apos;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.">
+        <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>
+      </method>
+      <method name="queue_clear"
+              c:identifier="gtk_widget_queue_clear"
+              doc="This function does the same as gtk_widget_queue_draw()."
+              deprecated="Use gtk_widget_queue_draw() instead."
+              deprecated-version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="queue_clear_area"
+              c:identifier="gtk_widget_queue_clear_area"
+              doc="This function is no longer different from
+gtk_widget_queue_draw_area(), though it once was. Now it just calls
+gtk_widget_queue_draw_area(). Originally
+gtk_widget_queue_clear_area() would force a redraw of the
+background for %GTK_NO_WINDOW widgets, and
+gtk_widget_queue_draw_area() would not. Now both functions ensure
+the background will be redrawn."
+              deprecated="Use gtk_widget_queue_draw_area() instead."
+              deprecated-version="2.2">
+        <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>
+      </method>
+      <method name="queue_resize"
+              c:identifier="gtk_widget_queue_resize"
+              doc="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&apos;s enough space for the new text.">
+        <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"
+              doc="This function works like gtk_widget_queue_resize(),
+except that the widget is not invalidated."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="draw"
+              c:identifier="gtk_widget_draw"
+              doc="In GTK+ 1.2, this function would immediately render the
+region @area of a widget, by invoking the virtual draw method of a
+widget. In GTK+ 2.0, the draw method is gone, and instead
+gtk_widget_draw() simply invalidates the specified region of the
+widget, then updates the invalid region of the widget immediately.
+Usually you don&apos;t want to update the region immediately for
+performance reasons, so in general gtk_widget_queue_draw_area() is
+a better choice if you want to draw a region of a widget.">
+        <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>
+      </method>
+      <method name="size_request"
+              c:identifier="gtk_widget_size_request"
+              doc="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.
+See also gtk_widget_get_child_requisition().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="requisition" transfer-ownership="none">
+            <type name="Requisition" c:type="GtkRequisition*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="size_allocate"
+              c:identifier="gtk_widget_size_allocate"
+              doc="This function is only used by #GtkContainer subclasses, to assign a size
+and position to their child widgets.">
+        <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>
+      </method>
+      <method name="get_child_requisition"
+              c:identifier="gtk_widget_get_child_requisition"
+              doc="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&apos;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 &quot;size_request&quot; 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 &quot;size_request&quot; 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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="requisition" transfer-ownership="none">
+            <type name="Requisition" c:type="GtkRequisition*"/>
+          </parameter>
+        </parameters>
+      </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="uint" 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="remove_accelerator"
+              c:identifier="gtk_widget_remove_accelerator"
+              doc="Removes an accelerator from @widget, previously installed with
+gtk_widget_add_accelerator().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="accel_group" transfer-ownership="none">
+            <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+          </parameter>
+          <parameter name="accel_key" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="accel_mods" transfer-ownership="none">
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_accel_path"
+              c:identifier="gtk_widget_set_accel_path"
+              doc="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&apos;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().">
+        <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="path used to look up the accelerator">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="accel_group"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkAccelGroup.">
+            <type name="AccelGroup" c:type="GtkAccelGroup*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_accel_closures"
+              c:identifier="gtk_widget_list_accel_closures">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </method>
+      <method name="can_activate_accel"
+              c:identifier="gtk_widget_can_activate_accel"
+              doc="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&apos;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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="signal_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="mnemonic_activate"
+              c:identifier="gtk_widget_mnemonic_activate"
+              doc="Emits the #GtkWidget::mnemonic-activate signal.
+The default handler for this signal activates the @widget if
+is %TRUE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="group_cycling" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="event"
+              c:identifier="gtk_widget_event"
+              doc="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&apos;t use this function;
+instead, use gtk_main_do_event() so the event will behave as if
+it were in the event queue. Don&apos;t synthesize expose events; instead,
+use gdk_window_invalidate_rect() to invalidate a region of the
+window.
+the event was handled)">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="send_expose"
+              c:identifier="gtk_widget_send_expose"
+              doc="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)">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="activate"
+              c:identifier="gtk_widget_activate"
+              doc="For widgets that can be &quot;activated&quot; (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&apos;t
+activatable, the function returns %FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_scroll_adjustments"
+              c:identifier="gtk_widget_set_scroll_adjustments"
+              doc="For widgets that support scrolling, sets the scroll adjustments and
+returns %TRUE.  For widgets that don&apos;t support scrolling, does
+nothing and returns %FALSE. Widgets that don&apos;t support scrolling
+can be scrolled by placing them in a #GtkViewport, which does
+support scrolling.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="hadjustment"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="an adjustment for horizontal scrolling, or %NULL">
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+          <parameter name="vadjustment"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="an adjustment for vertical scrolling, or %NULL">
+            <type name="Adjustment" c:type="GtkAdjustment*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reparent"
+              c:identifier="gtk_widget_reparent"
+              doc="Moves a widget from one #GtkContainer to another, handling reference
+count issues to avoid destroying the widget.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_parent" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="intersect"
+              c:identifier="gtk_widget_intersect"
+              doc="Computes the intersection of a @widget&apos;s area and @area, storing
+the intersection in @intersection, and returns %TRUE if there was
+an intersection.  @intersection may be %NULL if you&apos;re only
+interested in whether there was an intersection.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="area" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+          <parameter name="intersection" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="region_intersect"
+              c:identifier="gtk_widget_region_intersect"
+              doc="for %NO_WINDOW widgets; relative to the parent window
+of @widget-&gt;window for widgets with their own window.
+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.
+Computes the intersection of a @widget&apos;s area and @region, returning
+the intersection. The result may be empty, use gdk_region_empty() to
+check.">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Region" c:type="GdkRegion*"/>
+        </return-value>
+        <parameters>
+          <parameter name="region" transfer-ownership="none">
+            <type name="Gdk.Region" c:type="GdkRegion*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="freeze_child_notify"
+              c:identifier="gtk_widget_freeze_child_notify"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="child_notify"
+              c:identifier="gtk_widget_child_notify"
+              doc="class of @widget&lt;!-- --&gt;&apos;s parent
+Emits a #GtkWidget::child-notify signal for the
+&lt;link linkend=&quot;child-properties&quot;&gt;child property&lt;/link&gt; @child_property
+on @widget.
+This is the analogue of g_object_notify() for child properties.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="child_property" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="thaw_child_notify"
+              c:identifier="gtk_widget_thaw_child_notify"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_can_focus"
+              c:identifier="gtk_widget_set_can_focus"
+              doc="Specifies whether @widget can own the input focus. See
+gtk_widget_grab_focus() for actually setting the input focus on a
+widget."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="can_focus" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_can_focus"
+              c:identifier="gtk_widget_get_can_focus"
+              doc="Determines whether @widget can own the input focus. See
+gtk_widget_set_can_focus()."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_focus"
+              c:identifier="gtk_widget_has_focus"
+              doc="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."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_focus"
+              c:identifier="gtk_widget_is_focus"
+              doc="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.)">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="grab_focus"
+              c:identifier="gtk_widget_grab_focus"
+              doc="Causes @widget to have the keyboard focus for the #GtkWindow it&apos;s
+inside. @widget must be a focusable widget, such as a #GtkEntry;
+something like #GtkFrame won&apos;t work.
+More precisely, it must have the %GTK_CAN_FOCUS flag set. Use
+gtk_widget_set_can_focus() to modify that flag.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_can_default"
+              c:identifier="gtk_widget_set_can_default"
+              doc="Specifies whether @widget can be a default widget. See
+gtk_widget_grab_default() for details about the meaning of
+&quot;default&quot;."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="can_default" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_can_default"
+              c:identifier="gtk_widget_get_can_default"
+              doc="Determines whether @widget can be a default widget. See
+gtk_widget_set_can_default()."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_default"
+              c:identifier="gtk_widget_has_default"
+              doc="Determines whether @widget is the current default widget within its
+toplevel. See gtk_widget_set_can_default().
+its toplevel, %FALSE otherwise"
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="grab_default"
+              c:identifier="gtk_widget_grab_default"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_receives_default"
+              c:identifier="gtk_widget_set_receives_default"
+              doc="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
+&quot;default&quot;."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="receives_default" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_receives_default"
+              c:identifier="gtk_widget_get_receives_default"
+              doc="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"
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_grab"
+              c:identifier="gtk_widget_has_grab"
+              doc="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()."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_name"
+              c:identifier="gtk_widget_set_name"
+              doc="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.">
+        <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_name"
+              c:identifier="gtk_widget_get_name"
+              doc="Retrieves the name of a widget. See gtk_widget_set_name() for the
+significance of widget names.
+should not be modified or freed">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_state"
+              c:identifier="gtk_widget_set_state"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_state"
+              c:identifier="gtk_widget_get_state"
+              doc="Returns the widget&apos;s state. See gtk_widget_set_state()."
+              version="2.18">
+        <return-value transfer-ownership="full">
+          <type name="StateType" c:type="GtkStateType"/>
+        </return-value>
+      </method>
+      <method name="set_sensitive"
+              c:identifier="gtk_widget_set_sensitive"
+              doc="Sets the sensitivity of a widget. A widget is sensitive if the user
+can interact with it. Insensitive widgets are &quot;grayed out&quot; and the
+user can&apos;t interact with them. Insensitive widgets are known as
+&quot;inactive&quot;, &quot;disabled&quot;, or &quot;ghosted&quot; in some other toolkits.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sensitive" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_sensitive"
+              c:identifier="gtk_widget_get_sensitive"
+              doc="Returns the widget&apos;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&apos;s sensitivity. See gtk_widget_is_sensitive()."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_sensitive"
+              c:identifier="gtk_widget_is_sensitive"
+              doc="Returns the widget&apos;s effective sensitivity, which means
+it is sensitive itself and also its parent widget is sensntive"
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_visible"
+              c:identifier="gtk_widget_set_visible"
+              doc="Sets the visibility state of @widget. Note that setting this to
+%TRUE doesn&apos;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."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="visible" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_visible"
+              c:identifier="gtk_widget_get_visible"
+              doc="Determines whether the widget is visible. Note that this doesn&apos;t
+take into account whether the widget&apos;s parent is also visible
+or the widget is obscured in any way.
+See gtk_widget_set_visible()."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_has_window"
+              c:identifier="gtk_widget_set_has_window"
+              doc="Specifies whether @widget has a #GdkWindow of its own. Note that
+all realized widgets have a non-%NULL &quot;window&quot; pointer
+(gtk_widget_get_window() never returns a %NULL window when a widget
+is realized), but for many of them it&apos;s actually the #GdkWindow of
+one of its parent widgets. Widgets that create a %window for
+themselves in GtkWidget::realize() however must announce this by
+calling this function with @has_window = %TRUE.
+This function should only be called by widget implementations,
+and they should call it in their init() function."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="has_window" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_has_window"
+              c:identifier="gtk_widget_get_has_window"
+              doc="Determines whether @widget has a #GdkWindow of its own. See
+gtk_widget_set_has_window()."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_toplevel"
+              c:identifier="gtk_widget_is_toplevel"
+              doc="Determines whether @widget is a toplevel widget. Currently only
+#GtkWindow and #GtkInvisible are toplevel widgets. Toplevel
+widgets have no parent widget."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="is_drawable"
+              c:identifier="gtk_widget_is_drawable"
+              doc="Determines whether @widget can be drawn to. A widget can be drawn
+to if it is mapped and visible."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_realized"
+              c:identifier="gtk_widget_set_realized"
+              doc="Marks the widget as being realized.
+This function should only ever be called in a derived widget&apos;s
+&quot;realize&quot; or &quot;unrealize&quot; implementation."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="realized" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_realized"
+              c:identifier="gtk_widget_get_realized"
+              doc="Determines whether @widget is realized."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_mapped"
+              c:identifier="gtk_widget_set_mapped"
+              doc="Marks the widget as being realized.
+This function should only ever be called in a derived widget&apos;s
+&quot;map&quot; or &quot;unmap&quot; implementation."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mapped" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mapped"
+              c:identifier="gtk_widget_get_mapped"
+              doc="Whether the widget is mapped."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_app_paintable"
+              c:identifier="gtk_widget_set_app_paintable"
+              doc="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&apos;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);
+]|">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="app_paintable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_app_paintable"
+              c:identifier="gtk_widget_get_app_paintable"
+              doc="Determines whether the application intends to draw on the widget in
+an #GtkWidget::expose-event handler.
+See gtk_widget_set_app_paintable()"
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_double_buffered"
+              c:identifier="gtk_widget_set_double_buffered"
+              doc="Widgets are double buffered by default; you can use this function
+to turn off the buffering. &quot;Double buffered&quot; 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&apos;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&apos;t see individual graphics
+primitives being rendered.
+In very simple terms, double buffered widgets don&apos;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()).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="double_buffered" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_double_buffered"
+              c:identifier="gtk_widget_get_double_buffered"
+              doc="Determines whether the widget is double buffered.
+See gtk_widget_set_double_buffered()"
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_redraw_on_allocate"
+              c:identifier="gtk_widget_set_redraw_on_allocate"
+              doc="when it is allocated to a new size. Otherwise, only the
+new portion of the widget will be redrawn.
+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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="redraw_on_allocate" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_parent"
+              c:identifier="gtk_widget_set_parent"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_parent"
+              c:identifier="gtk_widget_get_parent"
+              doc="Returns the parent container of @widget.">
+        <return-value transfer-ownership="none"
+                      doc="the parent container of @widget, or %NULL">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_parent_window"
+              c:identifier="gtk_widget_set_parent_window"
+              doc="Sets a non default parent window for @widget.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent_window" transfer-ownership="none">
+            <type name="Gdk.Window" c:type="GdkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_parent_window"
+              c:identifier="gtk_widget_get_parent_window"
+              doc="Gets @widget&apos;s parent window.">
+        <return-value transfer-ownership="none"
+                      doc="the parent window of @widget.">
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="set_child_visible"
+              c:identifier="gtk_widget_set_child_visible"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="is_visible" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_child_visible"
+              c:identifier="gtk_widget_get_child_visible"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_window"
+              c:identifier="gtk_widget_set_window"
+              doc="Sets a widget&apos;s window. This function should only be used in a
+widget&apos;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&apos;s init() function."
+              version="2.18">
+        <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>
+        </parameters>
+      </method>
+      <method name="get_window"
+              c:identifier="gtk_widget_get_window"
+              doc="Returns the widget&apos;s window if it is realized, %NULL otherwise"
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_allocation"
+              c:identifier="gtk_widget_get_allocation"
+              doc="Retrieves the widget&apos;s allocation."
+              version="2.18">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="allocation"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="a pointer to a #GtkAllocation to copy to">
+            <type name="Allocation" c:type="GtkAllocation*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_allocation"
+              c:identifier="gtk_widget_set_allocation"
+              doc="Sets the widget&apos;s allocation.  This should not be used
+directly, but from within a widget&apos;s size_allocate method."
+              version="2.18">
+        <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>
+      </method>
+      <method name="get_requisition"
+              c:identifier="gtk_widget_get_requisition"
+              doc="Retrieves the widget&apos;s requisition.
+This function should only be used by widget implementations in
+order to figure whether the widget&apos;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."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="requisition"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="a pointer to a #GtkRequisition to copy to">
+            <type name="Requisition" c:type="GtkRequisition*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="child_focus"
+              c:identifier="gtk_widget_child_focus"
+              doc="This function is used by custom widget implementations; if you&apos;re
+writing an app, you&apos;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&apos;t modify the current focus location.
+This function replaces gtk_container_focus() from GTK+ 1.2.
+It was necessary to check that the child was visible, sensitive,
+and focusable before calling gtk_container_focus().
+gtk_widget_child_focus() returns %FALSE if the widget is not
+currently in a focusable state, so there&apos;s no need for those checks.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="DirectionType" c:type="GtkDirectionType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="keynav_failed"
+              c:identifier="gtk_widget_keynav_failed"
+              doc="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&apos;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)."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="DirectionType" c:type="GtkDirectionType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="error_bell"
+              c:identifier="gtk_widget_error_bell"
+              doc="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."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_size_request"
+              c:identifier="gtk_widget_set_size_request"
+              doc="Sets the minimum size of a widget; that is, the widget&apos;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&apos;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 &quot;natural&quot; size request of the widget will be used instead.
+Widgets can&apos;t actually be allocated a size less than 1 by 1, but
+you can pass 0,0 to this function to mean &quot;as small as possible.&quot;">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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="get_size_request"
+              c:identifier="gtk_widget_get_size_request"
+              doc="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 use, call gtk_widget_size_request() instead of
+this function.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for width, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for height, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_uposition"
+              c:identifier="gtk_widget_set_uposition"
+              doc="Sets the position of a widget. The funny &quot;u&quot; in the name comes from
+the &quot;user position&quot; hint specified by the X Window System, and
+exists for legacy reasons. This function doesn&apos;t work if a widget
+is inside a container; it&apos;s only really useful on #GtkWindow.
+Don&apos;t use this function to center dialogs over the main application
+window; most window managers will do the centering on your behalf
+if you call gtk_window_set_transient_for(), and it&apos;s really not
+possible to get the centering to work correctly in all cases from
+application code. But if you insist, use gtk_window_set_position()
+to set #GTK_WIN_POS_CENTER_ON_PARENT, don&apos;t do the centering
+manually.
+Note that although @x and @y can be individually unset, the position
+is not honoured unless both @x and @y are set.">
+        <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>
+        </parameters>
+      </method>
+      <method name="set_usize"
+              c:identifier="gtk_widget_set_usize"
+              doc="Sets the minimum size of a widget; that is, the widget&apos;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 is. The
+strange &quot;usize&quot; name dates from the early days of GTK+, and derives
+from X Window System terminology. In many 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 usize will force them
+to leave the window at least as large as the usize. 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&apos;s
+basically impossible to hardcode a size that will always be
+correct."
+              deprecated="Use gtk_widget_set_size_request() instead."
+              deprecated-version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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="set_events"
+              c:identifier="gtk_widget_set_events"
+              doc="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&apos;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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="events" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="add_events"
+              c:identifier="gtk_widget_add_events"
+              doc="Adds the events in the bitfield @events to the event mask for">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="events" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_extension_events"
+              c:identifier="gtk_widget_set_extension_events"
+              doc="Sets the extension events mask to @mode. See #GdkExtensionMode
+and gdk_input_set_extension_events().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="mode" transfer-ownership="none">
+            <type name="Gdk.ExtensionMode" c:type="GdkExtensionMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_extension_events"
+              c:identifier="gtk_widget_get_extension_events"
+              doc="Retrieves the extension events the widget will receive; see
+gdk_input_set_extension_events().">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.ExtensionMode" c:type="GdkExtensionMode"/>
+        </return-value>
+      </method>
+      <method name="get_toplevel"
+              c:identifier="gtk_widget_get_toplevel"
+              doc="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&apos;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&apos;s no ancestor.">
+        <return-value transfer-ownership="none"
+                      doc="the topmost ancestor of @widget, or @widget itself">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="get_ancestor"
+              c:identifier="gtk_widget_get_ancestor"
+              doc="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&apos;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.">
+        <return-value transfer-ownership="none"
+                      doc="the ancestor widget, or %NULL if not found">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="widget_type" transfer-ownership="none">
+            <type name="GType" c:type="GType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_colormap"
+              c:identifier="gtk_widget_get_colormap"
+              doc="Gets the colormap that will be used to render @widget. No reference will
+be added to the returned colormap; it should not be unreferenced.">
+        <return-value transfer-ownership="none"
+                      doc="the colormap used by @widget">
+          <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+        </return-value>
+      </method>
+      <method name="get_visual"
+              c:identifier="gtk_widget_get_visual"
+              doc="Gets the visual that will be used to render @widget.">
+        <return-value transfer-ownership="none" doc="the visual for @widget">
+          <type name="Gdk.Visual" c:type="GdkVisual*"/>
+        </return-value>
+      </method>
+      <method name="get_screen"
+              c:identifier="gtk_widget_get_screen"
+              doc="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."
+              version="2.2">
+        <return-value transfer-ownership="none"
+                      doc="the #GdkScreen for the toplevel for this widget.">
+          <type name="Gdk.Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="has_screen"
+              c:identifier="gtk_widget_has_screen"
+              doc="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."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_display"
+              c:identifier="gtk_widget_get_display"
+              doc="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."
+              version="2.2">
+        <return-value transfer-ownership="none"
+                      doc="the #GdkDisplay for the toplevel for this widget.">
+          <type name="Gdk.Display" c:type="GdkDisplay*"/>
+        </return-value>
+      </method>
+      <method name="get_root_window"
+              c:identifier="gtk_widget_get_root_window"
+              doc="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."
+              version="2.2">
+        <return-value transfer-ownership="none"
+                      doc="the #GdkWindow root window for the toplevel for this widget.">
+          <type name="Gdk.Window" c:type="GdkWindow*"/>
+        </return-value>
+      </method>
+      <method name="get_settings"
+              c:identifier="gtk_widget_get_settings"
+              doc="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.">
+        <return-value transfer-ownership="none"
+                      doc="the relevant #GtkSettings object">
+          <type name="Settings" c:type="GtkSettings*"/>
+        </return-value>
+      </method>
+      <method name="get_clipboard"
+              c:identifier="gtk_widget_get_clipboard"
+              doc="to use. %GDK_SELECTION_CLIPBOARD gives the
+default clipboard. Another common value
+is %GDK_SELECTION_PRIMARY, which gives
+the primary X selection.
+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."
+              version="2.2">
+        <return-value transfer-ownership="none"
+                      doc="the appropriate clipboard object. If no">
+          <type name="Clipboard" c:type="GtkClipboard*"/>
+        </return-value>
+        <parameters>
+          <parameter name="selection" transfer-ownership="none">
+            <type name="Gdk.Atom" c:type="GdkAtom"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_snapshot"
+              c:identifier="gtk_widget_get_snapshot"
+              doc="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&apos;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."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </return-value>
+        <parameters>
+          <parameter name="clip_rect"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GdkRectangle or %NULL">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_accessible"
+              c:identifier="gtk_widget_get_accessible"
+              doc="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=&quot;http://developer.gnome.org/doc/API/2.0/atk/index.html&quot;&gt;ATK&lt;/ulink&gt;
+library contains more information about accessible objects and their uses.">
+        <return-value transfer-ownership="none"
+                      doc="the #AtkObject associated with @widget">
+          <type name="Atk.Object" c:type="AtkObject*"/>
+        </return-value>
+      </method>
+      <method name="set_colormap"
+              c:identifier="gtk_widget_set_colormap"
+              doc="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).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="colormap" transfer-ownership="none">
+            <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_events"
+              c:identifier="gtk_widget_get_events"
+              doc="Returns the event mask for the widget (a bitfield containing flags
+from the #GdkEventMask enumeration). These are the events that the widget
+will receive.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="get_pointer"
+              c:identifier="gtk_widget_get_pointer"
+              doc="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,">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the X coordinate, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="y"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for the Y coordinate, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_ancestor"
+              c:identifier="gtk_widget_is_ancestor"
+              doc="Determines whether @widget is somewhere inside @ancestor, possibly with
+intermediate containers.
+grandchild, great grandchild, etc.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="ancestor" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="translate_coordinates"
+              c:identifier="gtk_widget_translate_coordinates"
+              doc="Translate coordinates relative to @src_widget&apos;s allocation to coordinates
+relative to @dest_widget&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="dest_widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="src_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="src_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="dest_x"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="location to store X position relative to @dest_widget">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="dest_y"
+                     direction="out"
+                     transfer-ownership="full"
+                     doc="location to store Y position relative to @dest_widget">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="hide_on_delete"
+              c:identifier="gtk_widget_hide_on_delete"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="style_attach"
+              c:identifier="gtk_widget_style_attach"
+              doc="This function attaches the widget&apos;s #GtkStyle to the widget&apos;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&apos;s &quot;realize&quot;
+implementation which does not chain up to its parent class&apos;
+&quot;realize&quot; implementation, because one of the parent classes
+(finally #GtkWidget) would attach the style itself."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="has_rc_style"
+              c:identifier="gtk_widget_has_rc_style"
+              doc="Determines if the widget style has been looked up through the rc mechanism.
+mechanism, %FALSE otherwise."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_style"
+              c:identifier="gtk_widget_set_style"
+              doc="gtk_widget_set_style() and go back to the default style
+Sets the #GtkStyle for a widget (@widget-&gt;style). You probably don&apos;t
+want to use this function; it interacts badly with themes, because
+themes work by replacing the #GtkStyle. Instead, use
+gtk_widget_modify_style().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="style"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="a #GtkStyle, or %NULL to remove the effect of a previous">
+            <type name="Style" c:type="GtkStyle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="ensure_style"
+              c:identifier="gtk_widget_ensure_style"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_style"
+              c:identifier="gtk_widget_get_style"
+              doc="Simply an accessor function that returns @widget-&gt;style.">
+        <return-value transfer-ownership="none"
+                      doc="the widget&apos;s #GtkStyle">
+          <type name="Style" c:type="GtkStyle*"/>
+        </return-value>
+      </method>
+      <method name="modify_style"
+              c:identifier="gtk_widget_modify_style"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="style" transfer-ownership="none">
+            <type name="RcStyle" c:type="GtkRcStyle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_modifier_style"
+              c:identifier="gtk_widget_get_modifier_style"
+              doc="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().">
+        <return-value transfer-ownership="none"
+                      doc="the modifier style for the widget. This rc style is">
+          <type name="RcStyle" c:type="GtkRcStyle*"/>
+        </return-value>
+      </method>
+      <method name="modify_fg"
+              c:identifier="gtk_widget_modify_fg"
+              doc="or %NULL to undo the effect of previous calls to
+of gtk_widget_modify_fg().
+Sets the foreground color for a widget in a particular state.
+All other style values are left untouched. See also
+gtk_widget_modify_style().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none" allow-none="1">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="modify_bg"
+              c:identifier="gtk_widget_modify_bg"
+              doc="or %NULL to undo the effect of previous calls to
+of gtk_widget_modify_bg().
+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 &quot;no window&quot; widgets (which have the %GTK_NO_WINDOW flag set)
+draw on their parent container&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none" allow-none="1">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="modify_text"
+              c:identifier="gtk_widget_modify_text"
+              doc="or %NULL to undo the effect of previous calls to
+of gtk_widget_modify_text().
+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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none" allow-none="1">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="modify_base"
+              c:identifier="gtk_widget_modify_base"
+              doc="or %NULL to undo the effect of previous calls to
+of gtk_widget_modify_base().
+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 &quot;no window&quot; widgets (which have the %GTK_NO_WINDOW flag set)
+draw on their parent container&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none" allow-none="1">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="modify_cursor"
+              c:identifier="gtk_widget_modify_cursor"
+              doc="allocated), or %NULL to undo the effect of previous calls to
+of gtk_widget_modify_cursor().
+allocated), or %NULL to undo the effect of previous calls to
+of gtk_widget_modify_cursor().
+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()."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="primary" transfer-ownership="none">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+          <parameter name="secondary" transfer-ownership="none">
+            <type name="Gdk.Color" c:type="GdkColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="modify_font"
+              c:identifier="gtk_widget_modify_font"
+              doc="the effect of previous calls to gtk_widget_modify_font().
+Sets the font to use for a widget.  All other style values are left
+untouched. See also gtk_widget_modify_style().">
+        <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="the font description to use, or %NULL to undo">
+            <type name="Pango.FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="create_pango_context"
+              c:identifier="gtk_widget_create_pango_context"
+              doc="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().">
+        <return-value transfer-ownership="full">
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="get_pango_context"
+              c:identifier="gtk_widget_get_pango_context"
+              doc="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&apos;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.">
+        <return-value transfer-ownership="none"
+                      doc="the #PangoContext for the widget.">
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="create_pango_layout"
+              c:identifier="gtk_widget_create_pango_layout"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="render_icon"
+              c:identifier="gtk_widget_render_icon"
+              doc="render at the size of the source and don&apos;t scale (if there are
+multiple source sizes, GTK+ picks one of the available sizes).
+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().">
+        <return-value transfer-ownership="full">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+        <parameters>
+          <parameter name="stock_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="size" transfer-ownership="none" doc="1 means">
+            <type name="int" c:type="GtkIconSize"/>
+          </parameter>
+          <parameter name="detail"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="render detail to pass to theme engine">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_composite_name"
+              c:identifier="gtk_widget_set_composite_name"
+              doc="Sets a widgets composite name. The widget must be
+a composite child of its parent; see gtk_widget_push_composite_child().">
+        <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_composite_name"
+              c:identifier="gtk_widget_get_composite_name"
+              doc="Obtains the composite name of a widget.
+a composite child. The string should be freed when it is no
+longer needed.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="reset_rc_styles"
+              c:identifier="gtk_widget_reset_rc_styles"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="style_get_property"
+              c:identifier="gtk_widget_style_get_property"
+              doc="Gets the value of a style property of @widget.">
+        <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="value" transfer-ownership="none">
+            <type name="GObject.Value" c:type="GValue*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="style_get"
+              c:identifier="gtk_widget_style_get"
+              doc="return the property values, starting with the location for
+Gets the values of a multiple style properties of @widget.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="first_property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_direction"
+              c:identifier="gtk_widget_set_direction"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dir" transfer-ownership="none">
+            <type name="TextDirection" c:type="GtkTextDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_direction"
+              c:identifier="gtk_widget_get_direction"
+              doc="Gets the reading direction for a particular widget. See
+gtk_widget_set_direction().">
+        <return-value transfer-ownership="full">
+          <type name="TextDirection" c:type="GtkTextDirection"/>
+        </return-value>
+      </method>
+      <method name="is_composited"
+              c:identifier="gtk_widget_is_composited"
+              doc="Whether @widget can rely on having its alpha channel
+drawn correctly. On X11 this function returns whether a
+compositing manager is running for @widget&apos;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."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="shape_combine_mask"
+              c:identifier="gtk_widget_shape_combine_mask"
+              doc="Sets a shape for this widget&apos;s GDK window. This allows for
+transparent windows etc., see gdk_window_shape_combine_mask()
+for more information.">
+        <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="shape to be added, or %NULL to remove an existing shape">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+          <parameter name="offset_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="offset_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="input_shape_combine_mask"
+              c:identifier="gtk_widget_input_shape_combine_mask"
+              doc="Sets an input shape for this widget&apos;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."
+              version="2.10">
+        <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="shape to be added, or %NULL to remove an existing shape">
+            <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+          </parameter>
+          <parameter name="offset_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="offset_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="reset_shapes"
+              c:identifier="gtk_widget_reset_shapes"
+              doc="Recursively resets the shape on this widget and its descendants.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="path"
+              c:identifier="gtk_widget_path"
+              doc="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. &quot;GtkButton&quot;) 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&apos;s name instead of starting with the name
+of @widget&apos;s outermost ancestor.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path_length"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store length of the path, or %NULL">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+          <parameter name="path"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store allocated path string, or %NULL">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="path_reversed"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store allocated reverse path string, or %NULL">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="class_path"
+              c:identifier="gtk_widget_class_path"
+              doc="string, or %NULL
+Same as gtk_widget_path(), but always uses the name of a widget&apos;s type,
+never uses a custom name set with gtk_widget_set_name().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="path_length"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the length of the class path, or %NULL">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+          <parameter name="path"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the class path as an allocated string, or %NULL">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+          <parameter name="path_reversed"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the reverse class path as an allocated">
+            <type name="utf8" c:type="gchar**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_mnemonic_labels"
+              c:identifier="gtk_widget_list_mnemonic_labels"
+              doc="Returns a newly allocated list of the widgets, normally labels, for
+which this widget is a 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."
+              version="2.4">
+        <return-value transfer-ownership="container" doc="the list of">
+          <type name="GLib.List" c:type="GList*">
+            <type name="Widget"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="add_mnemonic_label"
+              c:identifier="gtk_widget_add_mnemonic_label"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_mnemonic_label"
+              c:identifier="gtk_widget_remove_mnemonic_label"
+              doc="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()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="label" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tooltip_window"
+              c:identifier="gtk_widget_set_tooltip_window"
+              doc="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 &quot;gtk-tooltip&quot;, see gtk_widget_set_name()."
+              version="2.12">
+        <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="a #GtkWindow, or %NULL">
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tooltip_window"
+              c:identifier="gtk_widget_get_tooltip_window"
+              doc="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()."
+              version="2.12">
+        <return-value transfer-ownership="none"
+                      doc="The #GtkWindow of the current tooltip.">
+          <type name="Window" c:type="GtkWindow*"/>
+        </return-value>
+      </method>
+      <method name="trigger_tooltip_query"
+              c:identifier="gtk_widget_trigger_tooltip_query"
+              doc="Triggers a tooltip query on the display where the toplevel of @widget
+is located. See gtk_tooltip_trigger_tooltip_query() for more
+information."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_tooltip_text"
+              c:identifier="gtk_widget_set_tooltip_text"
+              doc="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()."
+              version="2.12">
+        <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>
+        </parameters>
+      </method>
+      <method name="get_tooltip_text"
+              c:identifier="gtk_widget_get_tooltip_text"
+              doc="Gets the contents of the tooltip for @widget.
+returned string with g_free() when done."
+              version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_tooltip_markup"
+              c:identifier="gtk_widget_set_tooltip_markup"
+              doc="Sets @markup as the contents of the tooltip, which is marked up with
+the &lt;link linkend=&quot;PangoMarkupFormat&quot;&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()."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the contents of the tooltip for @widget, or %NULL">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tooltip_markup"
+              c:identifier="gtk_widget_get_tooltip_markup"
+              doc="Gets the contents of the tooltip for @widget.
+returned string with g_free() when done."
+              version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_has_tooltip"
+              c:identifier="gtk_widget_set_has_tooltip"
+              doc="Sets the has-tooltip property on @widget to @has_tooltip.  See
+GtkWidget:has-tooltip for more information."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="has_tooltip" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_has_tooltip"
+              c:identifier="gtk_widget_get_has_tooltip"
+              doc="Returns the current value of the has-tooltip property.  See
+GtkWidget:has-tooltip for more information."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_action"
+              c:identifier="gtk_widget_get_action"
+              doc="Returns the #GtkAction that @widget is a proxy for.
+See also gtk_action_get_proxies().
+%NULL, if it is not attached to an action."
+              version="2.10"
+              deprecated="Use gtk_activatable_get_related_action() instead."
+              deprecated-version="2.16">
+        <return-value transfer-ownership="full">
+          <type name="Action" c:type="GtkAction*"/>
+        </return-value>
+      </method>
+      <property name="app-paintable" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="can-default" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="can-focus" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="composite-child">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="double-buffered" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="events" writable="1">
+        <type name="Gdk.EventMask" c:type="GdkEventMask"/>
+      </property>
+      <property name="extension-events" writable="1">
+        <type name="Gdk.ExtensionMode" c:type="GdkExtensionMode"/>
+      </property>
+      <property name="has-default" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="has-focus" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="has-tooltip"
+                version="2.12"
+                writable="1"
+                doc="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.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="height-request" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="is-focus" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="name" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="no-show-all" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="parent" writable="1">
+        <type name="Container" c:type="GtkContainer"/>
+      </property>
+      <property name="receives-default" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="sensitive" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="style" writable="1">
+        <type name="Style" c:type="GtkStyle"/>
+      </property>
+      <property name="tooltip-markup"
+                version="2.12"
+                writable="1"
+                doc="Sets the text of tooltip to be the given string, which is marked up
+with the &lt;link linkend=&quot;PangoMarkupFormat&quot;&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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="tooltip-text"
+                version="2.12"
+                writable="1"
+                doc="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.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="visible" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="width-request" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="window"
+                version="2.14"
+                doc="The widget&apos;s window if it is realized, %NULL otherwise.">
+        <type name="Gdk.Window" c:type="GdkWindow"/>
+      </property>
+      <field name="object">
+        <type name="Object" c:type="GtkObject"/>
+      </field>
+      <field name="private_flags">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="state">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="saved_state">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="style">
+        <type name="Style" c:type="GtkStyle*"/>
+      </field>
+      <field name="requisition">
+        <type name="Requisition" c:type="GtkRequisition"/>
+      </field>
+      <field name="allocation">
+        <type name="Allocation" c:type="GtkAllocation"/>
+      </field>
+      <field name="window">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="parent">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <glib:signal name="accel-closures-changed">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="button-press-event"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="button-release-event"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="can-activate-accel"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="signal_id" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="child-notify"
+                   doc="The ::child-notify signal is emitted for each
+&lt;link linkend=&quot;child-properties&quot;&gt;child property&lt;/link&gt;  that has
+changed on an object. The signal&apos;s detail holds the property name.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="pspec" transfer-ownership="none">
+            <type name="GObject.ParamSpec" c:type="GParam"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="client-event"
+                   doc="The ::client-event will be emitted when the @widget&apos;s window
+receives a message (via a ClientMessage event) from another
+application.
+the event. %FALSE to propagate the event further.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="composited-changed"
+                   doc="The ::composited-changed signal is emitted when the composited
+status of @widget&lt;!-- --&gt;s screen changes.
+See gdk_screen_is_composited().">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="configure-event">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="damage-event"
+                   doc="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."
+                   version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="delete-event"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="destroy-event"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="direction-changed"
+                   doc="The ::direction-changed signal is emitted when the text direction
+of a widget changes.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="previous_direction" transfer-ownership="none">
+            <type name="TextDirection" c:type="GtkTextDirection"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-begin"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="drag_context" transfer-ownership="none">
+            <type name="Gdk.DragContext" c:type="GdkDragContext"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-data-delete"
+                   doc="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
+&quot;delete&quot; means depends on the context of the drag operation.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="drag_context" transfer-ownership="none">
+            <type name="Gdk.DragContext" c:type="GdkDragContext"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-data-get"
+                   doc="#GtkTargetList
+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().">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="drag_context" transfer-ownership="none">
+            <type name="Gdk.DragContext" c:type="GdkDragContext"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="SelectionData" c:type="GtkSelectionData"/>
+          </parameter>
+          <parameter name="info" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="time" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-data-received"
+                   doc="#GtkTargetList
+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,
+&quot;Move the data ?\n&quot;);
+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);
+}
+]|">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="drag_context" transfer-ownership="none">
+            <type name="Gdk.DragContext" c:type="GdkDragContext"/>
+          </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="data" transfer-ownership="none">
+            <type name="SelectionData" c:type="GtkSelectionData"/>
+          </parameter>
+          <parameter name="info" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="time" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-drop"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="drag_context" transfer-ownership="none">
+            <type name="Gdk.DragContext" c:type="GdkDragContext"/>
+          </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="time" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-end"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="drag_context" transfer-ownership="none">
+            <type name="Gdk.DragContext" c:type="GdkDragContext"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-failed"
+                   doc="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 &quot;drag operation failed&quot;
+animation), otherwise it returns %FALSE."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="drag_context" transfer-ownership="none">
+            <type name="Gdk.DragContext" c:type="GdkDragContext"/>
+          </parameter>
+          <parameter name="result" transfer-ownership="none">
+            <type name="DragResult" c:type="GtkDragResult"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-leave"
+                   doc="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()">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="drag_context" transfer-ownership="none">
+            <type name="Gdk.DragContext" c:type="GdkDragContext"/>
+          </parameter>
+          <parameter name="time" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="drag-motion"
+                   doc="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&apos;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 &quot;enter&quot; signal. Upon an &quot;enter&quot;, 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;/
+}
+}
+]|">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="drag_context" transfer-ownership="none">
+            <type name="Gdk.DragContext" c:type="GdkDragContext"/>
+          </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="time" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="enter-notify-event"
+                   doc="The ::enter-notify-event will be emitted when the pointer enters
+the @widget&apos;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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="event"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="event-after"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="expose-event"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="focus">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="DirectionType" c:type="GtkDirectionType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="focus-in-event">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="focus-out-event">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="grab-broken-event"
+                   doc="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."
+                   version="2.8">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="grab-focus">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="grab-notify"
+                   doc="if it becomes unshadowed
+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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="was_grabbed" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="hide">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="hierarchy-changed"
+                   doc="if the widget was previously unanchored
+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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="previous_toplevel"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the previous toplevel ancestor, or %NULL">
+            <type name="Widget" c:type="GtkWidget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="key-press-event"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="key-release-event"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="keynav-failed"
+                   doc="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)."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="DirectionType" c:type="GtkDirectionType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="leave-notify-event"
+                   doc="The ::leave-notify-event will be emitted when the pointer leaves
+the @widget&apos;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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="map">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="map-event">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="mnemonic-activate">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="arg1" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="motion-notify-event"
+                   doc="The ::motion-notify-event signal is emitted when the pointer moves
+over the widget&apos;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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="move-focus">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="DirectionType" c:type="GtkDirectionType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="no-expose-event"
+                   doc="The ::no-expose-event will be emitted when the @widget&apos;s window is
+drawn as a copy of another #GdkDrawable (with gdk_draw_drawable() or
+gdk_window_copy_area()) 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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="parent-set"
+                   doc="just got its initial parent.
+The ::parent-set signal is emitted when a new parent
+has been set on a widget.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the previous parent, or %NULL if the widget">
+            <type name="Widget" c:type="GtkWidget"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="popup-menu">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="property-notify-event">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="proximity-in-event">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="proximity-out-event">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="query-tooltip"
+                   doc="been emitted, relative to @widget-&gt;window
+been emitted, relative to @widget-&gt;window
+Emitted when #GtkWidget:has-tooltip is %TRUE and the #GtkSettings:gtk-tooltip-timeout
+has expired with the cursor hovering &quot;above&quot; @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."
+                   version="2.12">
+        <return-value transfer-ownership="full">
+          <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="keyboard_mode" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="tooltip" transfer-ownership="none">
+            <type name="Tooltip" c:type="GtkTooltip"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="realize">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="screen-changed"
+                   doc="widget was not associated with a screen before
+The ::screen-changed signal gets emitted when the
+screen of a widget has changed.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="previous_screen"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the previous screen, or %NULL if the">
+            <type name="Gdk.Screen" c:type="GdkScreen"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="scroll-event"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="selection-clear-event">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="selection-get">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="SelectionData" c:type="GtkSelectionData"/>
+          </parameter>
+          <parameter name="info" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="time" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="selection-notify-event">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="selection-received">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="data" transfer-ownership="none">
+            <type name="SelectionData" c:type="GtkSelectionData"/>
+          </parameter>
+          <parameter name="time" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="selection-request-event">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="show">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="show-help">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="help_type" transfer-ownership="none">
+            <type name="WidgetHelpType" c:type="GtkWidgetHelpType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="size-allocate">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="allocation" transfer-ownership="none">
+            <type name="Gdk.Rectangle" c:type="GdkRectangle"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="size-request">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="requisition" transfer-ownership="none">
+            <type name="Requisition" c:type="GtkRequisition"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="state-changed"
+                   doc="The ::state-changed signal is emitted when the widget state changes.
+See gtk_widget_get_state().">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="state" transfer-ownership="none">
+            <type name="StateType" c:type="GtkStateType"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="style-set"
+                   doc="just got its initial style
+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.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="previous_style"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the previous style, or %NULL if the widget">
+            <type name="Style" c:type="GtkStyle"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="unmap">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="unmap-event">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="unrealize">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="visibility-notify-event"
+                   doc="The ::visibility-notify-event will be emitted when the @widget&apos;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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="window-state-event"
+                   doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+    </class>
+    <record name="WidgetAuxInfo" c:type="GtkWidgetAuxInfo">
+      <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="width" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="x_set" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="y_set" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="WidgetClass"
+            c:type="GtkWidgetClass"
+            glib:is-gtype-struct-for="Widget"
+            doc="&lt;structfield&gt;activate_signal&lt;/structfield&gt;
+The signal to emit when a widget of this class is activated,
+gtk_widget_activate() handles the emission. Implementation of this
+signal is optional.
+&lt;structfield&gt;set_scroll_adjustment_signal&lt;/structfield&gt;
+This signal is emitted  when a widget of this class is added
+to a scrolling aware parent, gtk_widget_set_scroll_adjustments()
+handles the emission.
+Implementation of this signal is optional.">
+      <field name="parent_class">
+        <type name="ObjectClass" c:type="GtkObjectClass"/>
+      </field>
+      <field name="activate_signal">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="set_scroll_adjustments_signal">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="dispatch_child_properties_changed">
+        <callback name="dispatch_child_properties_changed"
+                  c:type="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="uint" 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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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" c:type="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="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="child_notify">
+        <callback name="child_notify" c:type="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" c:type="mnemonic_activate">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="boolean" c:type="gboolean"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="grab_focus">
+        <callback name="grab_focus" c:type="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" c:type="focus">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="button_press_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="button_release_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="scroll_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="motion_notify_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="delete_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="destroy_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="expose_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="key_press_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="key_release_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="enter_notify_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="leave_notify_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="configure_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="focus_in_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="focus_out_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="map_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="unmap_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="property_notify_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="selection_clear_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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"
+                  c:type="selection_request_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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"
+                  c:type="selection_notify_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="proximity_in_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="proximity_out_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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"
+                  c:type="visibility_notify_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="client_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="no_expose_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="window_state_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="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="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="time_" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="selection_received">
+        <callback name="selection_received" c:type="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="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_begin">
+        <callback name="drag_begin" c:type="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" c:type="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" c:type="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="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="time_" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_data_delete">
+        <callback name="drag_data_delete" c:type="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" c:type="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="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_motion">
+        <callback name="drag_motion" c:type="drag_motion">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="time_" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_drop">
+        <callback name="drag_drop" c:type="drag_drop">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="time_" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="drag_data_received">
+        <callback name="drag_data_received" c:type="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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" 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="uint" c:type="guint"/>
+            </parameter>
+            <parameter name="time_" transfer-ownership="none">
+              <type name="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="popup_menu">
+        <callback name="popup_menu" c:type="popup_menu">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="show_help">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="get_accessible">
+          <return-value transfer-ownership="full">
+            <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" c:type="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" c:type="can_activate_accel">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="uint" c:type="guint"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="grab_broken_event">
+        <callback name="grab_broken_event" c:type="grab_broken_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="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" c:type="query_tooltip">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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="int" c:type="gint"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" c:type="gint"/>
+            </parameter>
+            <parameter name="keyboard_tooltip" transfer-ownership="none">
+              <type name="boolean" c:type="gboolean"/>
+            </parameter>
+            <parameter name="tooltip" transfer-ownership="none">
+              <type name="Tooltip" c:type="GtkTooltip*"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="gtk_reserved5">
+        <callback name="gtk_reserved5" c:type="_gtk_reserved5">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved6">
+        <callback name="gtk_reserved6" c:type="_gtk_reserved6">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved7">
+        <callback name="gtk_reserved7" c:type="_gtk_reserved7">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <method name="install_style_property"
+              c:identifier="gtk_widget_class_install_style_property"
+              doc="Installs a style property on a widget class. The parser for the
+style property is determined by the value type of @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="install_style_property_parser"
+              c:identifier="gtk_widget_class_install_style_property_parser"
+              doc="Installs a style property on a widget class.">
+        <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" scope="call">
+            <type name="RcPropertyParser" c:type="GtkRcPropertyParser"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_style_property"
+              c:identifier="gtk_widget_class_find_style_property"
+              doc="style property with that name.
+Finds a style property of a widget class by name."
+              version="2.2">
+        <return-value transfer-ownership="full"
+                      doc="the #GParamSpec of the style property or %NULL if @class has no">
+          <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
+        </return-value>
+        <parameters>
+          <parameter name="property_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_style_properties"
+              c:identifier="gtk_widget_class_list_style_properties"
+              doc="be freed with g_free().
+Returns all style properties of a widget class."
+              version="2.2">
+        <return-value transfer-ownership="full">
+          <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_properties"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="uint" c:type="guint*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <bitfield name="WidgetFlags"
+              doc="#GtkMenu&lt;!-- --&gt;s have this flag set throughout their lifetime.
+Toplevel widgets always contain their own #GdkWindow.
+Visible action (e.g. drawing) is performed on the parent&apos;s #GdkWindow.
+A realized widget has an associated #GdkWindow.
+Only realized widgets can be mapped. It means that gdk_window_show()
+has been called on the widgets window(s).
+widget will be mapped as soon as its parent is mapped.
+The sensitivity of a widget determines whether it will receive
+certain events (e.g. button or key presses). One premise for
+the widget&apos;s sensitivity is to have this flag set.
+parents of the widget.
+This is the second premise for the widget&apos;s sensitivity. Once
+it has %GTK_SENSITIVE and %GTK_PARENT_SENSITIVE set, its state is
+effectively sensitive. This is expressed (and can be examined) by
+the #GTK_WIDGET_IS_SENSITIVE macro.
+have %GTK_CAN_FOCUS set. The flag will be unset once another widget
+grabs the focus.
+gtk_widget_grab_default() and will reserve space to draw the default if possible
+should be drawn appropriately if possible
+widget is in the grab_widgets stack, and will be the preferred one for
+receiving events other than ones of cosmetic value.
+mechanism. It does not imply that the widget actually had a style
+defined through the rc mechanism.
+gtk_widget_push_composite_child(), gtk_widget_pop_composite_child().
+Must be set on widgets whose window the application directly draws on,
+in order to keep GTK+ from overwriting the drawn stuff.  See
+&lt;xref linkend=&quot;app-paintable-widgets&quot;/&gt; for a detailed
+description of this flag.
+%GTK_HAS_DEFAULT set even if there is a different widget set as default.
+Indicates that exposes done on the widget should be
+double-buffered.  See &lt;xref linkend=&quot;double-buffering&quot;/&gt; for a
+detailed discussion of how double-buffering works in GTK+ and
+why you may want to disable it for special cases.
+Tells about certain properties of the widget."
+              glib:type-name="GtkWidgetFlags"
+              glib:get-type="gtk_widget_flags_get_type"
+              c:type="GtkWidgetFlags">
+      <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="no_reparent"
+              value="262144"
+              c:identifier="GTK_NO_REPARENT"
+              glib:nick="no-reparent"/>
+      <member name="app_paintable"
+              value="524288"
+              c:identifier="GTK_APP_PAINTABLE"
+              glib:nick="app-paintable"/>
+      <member name="receives_default"
+              value="1048576"
+              c:identifier="GTK_RECEIVES_DEFAULT"
+              glib:nick="receives-default"/>
+      <member name="double_buffered"
+              value="2097152"
+              c:identifier="GTK_DOUBLE_BUFFERED"
+              glib:nick="double-buffered"/>
+      <member name="no_show_all"
+              value="4194304"
+              c:identifier="GTK_NO_SHOW_ALL"
+              glib:nick="no-show-all"/>
+    </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="WidgetShapeInfo" c:type="GtkWidgetShapeInfo">
+      <field name="offset_x" writable="1">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="offset_y" writable="1">
+        <type name="int16" c:type="gint16"/>
+      </field>
+      <field name="shape_mask" writable="1">
+        <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+      </field>
+    </record>
+    <class name="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"/>
+      <constructor name="new"
+                   c:identifier="gtk_window_new"
+                   doc="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&apos;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 &quot;popups&quot;.
+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=&quot;gtk-X11-arch&quot;&gt;window manager&lt;/link&gt;.
+If you simply want an undecorated window (no window borders), use
+gtk_window_set_decorated(), don&apos;t use #GTK_WINDOW_POPUP.">
+        <return-value transfer-ownership="full">
+          <type name="Window" c:type="GtkWidget*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="WindowType" c:type="GtkWindowType"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <function name="set_default_icon_list"
+                c:identifier="gtk_window_set_default_icon_list"
+                doc="Sets an icon list to be used as fallback for windows that haven&apos;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.">
+        <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="get_default_icon_list"
+                c:identifier="gtk_window_get_default_icon_list"
+                doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="GLib.List" c:type="GList*"/>
+        </return-value>
+      </function>
+      <function name="set_default_icon"
+                c:identifier="gtk_window_set_default_icon"
+                doc="Sets an icon to be used as fallback for windows that haven&apos;t
+had gtk_window_set_icon() called on them from a pixbuf."
+                version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon" transfer-ownership="none">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="set_default_icon_name"
+                c:identifier="gtk_window_set_default_icon_name"
+                doc="Sets an icon to be used as fallback for windows that haven&apos;t
+had gtk_window_set_icon_list() called on them from a named
+themed icon, see gtk_window_set_icon_name()."
+                version="2.6">
+        <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="get_default_icon_name"
+                c:identifier="gtk_window_get_default_icon_name"
+                doc="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()."
+                version="2.16">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </function>
+      <function name="set_default_icon_from_file"
+                c:identifier="gtk_window_set_default_icon_from_file"
+                doc="Sets an icon to be used as fallback for windows that haven&apos;t
+had gtk_window_set_icon_list() called on them from a file
+on disk. Warns on failure if @err is %NULL."
+                version="2.2"
+                throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="set_auto_startup_notification"
+                c:identifier="gtk_window_set_auto_startup_notification"
+                doc="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."
+                version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </function>
+      <function name="list_toplevels"
+                c:identifier="gtk_window_list_toplevels"
+                doc="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.">
+        <return-value transfer-ownership="container"
+                      doc="list of toplevel widgets">
+          <type name="GLib.List" c:type="GList*">
+            <type name="Widget"/>
+          </type>
+        </return-value>
+      </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="set_title"
+              c:identifier="gtk_window_set_title"
+              doc="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=&quot;gtk-X11-arch&quot;&gt;window
+manager&lt;/link&gt;, so exactly how the title appears to users may vary
+according to a user&apos;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.">
+        <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="get_title"
+              c:identifier="gtk_window_get_title"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_wmclass"
+              c:identifier="gtk_window_set_wmclass"
+              doc="Don&apos;t use this function. It sets the X Window System &quot;class&quot; and
+&quot;name&quot; 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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wmclass_name" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+          <parameter name="wmclass_class" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_role"
+              c:identifier="gtk_window_set_role"
+              doc="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=&quot;gtk-X11-arch&quot;&gt;window manager&lt;/link&gt; to identify &quot;the
+same&quot; window when an application is restarted. So for example you
+might set the &quot;toolbox&quot; role on your app&apos;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&apos;t need to set the
+role, since the WM can use the title to identify the window when
+restoring the session.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="role" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_startup_id"
+              c:identifier="gtk_window_set_startup_id"
+              doc="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."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="startup_id" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_role"
+              c:identifier="gtk_window_get_role"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="add_accel_group"
+              c:identifier="gtk_window_add_accel_group"
+              doc="Associate @accel_group with @window, such that calling
+gtk_accel_groups_activate() on @window will activate accelerators
+in @accel_group.">
+        <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>
+        </parameters>
+      </method>
+      <method name="remove_accel_group"
+              c:identifier="gtk_window_remove_accel_group"
+              doc="Reverses the effects of gtk_window_add_accel_group().">
+        <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>
+        </parameters>
+      </method>
+      <method name="set_position"
+              c:identifier="gtk_window_set_position"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="position" transfer-ownership="none">
+            <type name="WindowPosition" c:type="GtkWindowPosition"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="activate_focus"
+              c:identifier="gtk_window_activate_focus"
+              doc="Activates the current focused widget within the window.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_focus"
+              c:identifier="gtk_window_set_focus"
+              doc="any focus widget for the toplevel window.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="focus"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="widget to be the new focus widget, or %NULL to unset">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_focus"
+              c:identifier="gtk_window_get_focus"
+              doc="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.">
+        <return-value transfer-ownership="none"
+                      doc="the currently focused widget, or %NULL if there is none.">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="set_default"
+              c:identifier="gtk_window_set_default"
+              doc="default widget for the toplevel.
+The default widget is the widget that&apos;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&apos;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&apos;d like to make the default using GTK_WIDGET_SET_FLAGS().">
+        <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="widget to be the default, or %NULL to unset the">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_default_widget"
+              c:identifier="gtk_window_get_default_widget"
+              doc="Returns the default widget for @window. See gtk_window_set_default()
+for more details."
+              version="2.14">
+        <return-value transfer-ownership="full">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </return-value>
+      </method>
+      <method name="activate_default"
+              c:identifier="gtk_window_activate_default"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_transient_for"
+              c:identifier="gtk_window_set_transient_for"
+              doc="Dialog windows should be set transient for the main application
+window they were spawned from. This allows &lt;link
+linkend=&quot;gtk-X11-arch&quot;&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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="parent"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="parent window, or %NULL">
+            <type name="Window" c:type="GtkWindow*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_transient_for"
+              c:identifier="gtk_window_get_transient_for"
+              doc="Fetches the transient parent for this window. See
+gtk_window_set_transient_for().
+if no transient parent has been set.">
+        <return-value transfer-ownership="none"
+                      doc="the transient parent for this window, or %NULL">
+          <type name="Window" c:type="GtkWindow*"/>
+        </return-value>
+      </method>
+      <method name="set_opacity"
+              c:identifier="gtk_window_set_opacity"
+              doc="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&apos;s opacity after the window has been
+shown causes it to flicker once on Windows."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="opacity" transfer-ownership="none">
+            <type name="double" c:type="gdouble"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_opacity"
+              c:identifier="gtk_window_get_opacity"
+              doc="Fetches the requested opacity for this window. See
+gtk_window_set_opacity()."
+              version="2.12">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </return-value>
+      </method>
+      <method name="set_type_hint"
+              c:identifier="gtk_window_set_type_hint"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hint" transfer-ownership="none">
+            <type name="Gdk.WindowTypeHint" c:type="GdkWindowTypeHint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_type_hint"
+              c:identifier="gtk_window_get_type_hint"
+              doc="Gets the type hint for this window. See gtk_window_set_type_hint().">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.WindowTypeHint" c:type="GdkWindowTypeHint"/>
+        </return-value>
+      </method>
+      <method name="set_skip_taskbar_hint"
+              c:identifier="gtk_window_set_skip_taskbar_hint"
+              doc="Windows may set a hint asking the desktop environment not to display
+the window in the task bar. This function sets this hint."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_skip_taskbar_hint"
+              c:identifier="gtk_window_get_skip_taskbar_hint"
+              doc="Gets the value set by gtk_window_set_skip_taskbar_hint()"
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_skip_pager_hint"
+              c:identifier="gtk_window_set_skip_pager_hint"
+              doc="Windows may set a hint asking the desktop environment not to display
+the window in the pager. This function sets this hint.
+(A &quot;pager&quot; is any desktop navigation tool such as a workspace
+switcher that displays a thumbnail representation of the windows
+on the screen.)"
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_skip_pager_hint"
+              c:identifier="gtk_window_get_skip_pager_hint"
+              doc="Gets the value set by gtk_window_set_skip_pager_hint()."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_urgency_hint"
+              c:identifier="gtk_window_set_urgency_hint"
+              doc="Windows may set a hint asking the desktop environment to draw
+the users attention to the window. This function sets this hint."
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_urgency_hint"
+              c:identifier="gtk_window_get_urgency_hint"
+              doc="Gets the value set by gtk_window_set_urgency_hint()"
+              version="2.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_accept_focus"
+              c:identifier="gtk_window_set_accept_focus"
+              doc="Windows may set a hint asking the desktop environment not to receive
+the input focus. This function sets this hint."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_accept_focus"
+              c:identifier="gtk_window_get_accept_focus"
+              doc="Gets the value set by gtk_window_set_accept_focus()."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_focus_on_map"
+              c:identifier="gtk_window_set_focus_on_map"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_focus_on_map"
+              c:identifier="gtk_window_get_focus_on_map"
+              doc="Gets the value set by gtk_window_set_focus_on_map().
+mapped."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_destroy_with_parent"
+              c:identifier="gtk_window_set_destroy_with_parent"
+              doc="If @setting is %TRUE, then destroying the transient parent of @window
+will also destroy @window itself. This is useful for dialogs that
+shouldn&apos;t persist beyond the lifetime of the main window they&apos;re
+associated with, for example.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_destroy_with_parent"
+              c:identifier="gtk_window_get_destroy_with_parent"
+              doc="Returns whether the window will be destroyed with its transient parent. See
+gtk_window_set_destroy_with_parent ().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_mnemonics_visible"
+              c:identifier="gtk_window_set_mnemonics_visible"
+              doc="Sets the #GtkWindow:mnemonics-visible property."
+              version="2.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mnemonics_visible"
+              c:identifier="gtk_window_get_mnemonics_visible">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_resizable"
+              c:identifier="gtk_window_set_resizable"
+              doc="Sets whether the user can resize a window. Windows are user resizable
+by default.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="resizable" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_resizable"
+              c:identifier="gtk_window_get_resizable"
+              doc="Gets the value set by gtk_window_set_resizable().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_gravity"
+              c:identifier="gtk_window_set_gravity"
+              doc="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 &quot;do what you mean.&quot;">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gravity" transfer-ownership="none">
+            <type name="Gdk.Gravity" c:type="GdkGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_gravity"
+              c:identifier="gtk_window_get_gravity"
+              doc="Gets the value set by gtk_window_set_gravity().">
+        <return-value transfer-ownership="none" doc="window gravity">
+          <type name="Gdk.Gravity" c:type="GdkGravity"/>
+        </return-value>
+      </method>
+      <method name="set_geometry_hints"
+              c:identifier="gtk_window_set_geometry_hints"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry_widget" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+          <parameter name="geometry" transfer-ownership="none">
+            <type name="Gdk.Geometry" c:type="GdkGeometry*"/>
+          </parameter>
+          <parameter name="geom_mask" transfer-ownership="none">
+            <type name="Gdk.WindowHints" c:type="GdkWindowHints"/>
+          </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="get_screen" c:identifier="gtk_window_get_screen">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.Screen" c:type="GdkScreen*"/>
+        </return-value>
+      </method>
+      <method name="is_active"
+              c:identifier="gtk_window_is_active"
+              doc="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()"
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="has_toplevel_focus"
+              c:identifier="gtk_window_has_toplevel_focus"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_has_frame"
+              c:identifier="gtk_window_set_has_frame"
+              doc="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 &quot;frame&quot; 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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_has_frame"
+              c:identifier="gtk_window_get_has_frame"
+              doc="Accessor for whether the window has a frame window exterior to
+via gtk_window_set_has_frame().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_frame_dimensions"
+              c:identifier="gtk_window_set_frame_dimensions"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="left" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="top" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="right" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="bottom" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_frame_dimensions"
+              c:identifier="gtk_window_get_frame_dimensions"
+              doc="framebuffer port; see gtk_window_set_has_frame(). It will not
+return the size of the window border drawn by the &lt;link
+linkend=&quot;gtk-X11-arch&quot;&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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="left"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the width of the frame at the left, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="top"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the height of the frame at the top, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="right"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the width of the frame at the returns, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="bottom"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the height of the frame at the bottom, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_decorated"
+              c:identifier="gtk_window_set_decorated"
+              doc="By default, windows are decorated with a title bar, resize
+controls, etc.  Some &lt;link linkend=&quot;gtk-X11-arch&quot;&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&apos;s no window manager
+policy involved.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_decorated"
+              c:identifier="gtk_window_get_decorated"
+              doc="Returns whether the window has been set to have decorations
+such as a title bar via gtk_window_set_decorated().">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_deletable"
+              c:identifier="gtk_window_set_deletable"
+              doc="By default, windows have a close button in the window frame. Some
+&lt;link linkend=&quot;gtk-X11-arch&quot;&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&apos;s no window manager
+policy involved."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_deletable"
+              c:identifier="gtk_window_get_deletable"
+              doc="Returns whether the window has been set to have a close button
+via gtk_window_set_deletable()."
+              version="2.10">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_icon_list"
+              c:identifier="gtk_window_set_icon_list"
+              doc="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&apos;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&apos;s no need to explicitly
+set the icon on transient windows.">
+        <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>
+      </method>
+      <method name="get_icon_list"
+              c:identifier="gtk_window_get_icon_list"
+              doc="Retrieves the list of icons set by gtk_window_set_icon_list().
+The list is copied, but the reference count on each
+member won&apos;t be incremented.">
+        <return-value transfer-ownership="container"
+                      doc="copy of window&apos;s icon list">
+          <type name="GLib.List" c:type="GList*">
+            <type name="GdkPixbuf.Pixbuf"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="set_icon"
+              c:identifier="gtk_window_set_icon"
+              doc="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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="icon"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="icon image, or %NULL">
+            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_name"
+              c:identifier="gtk_window_set_icon_name"
+              doc="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."
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="name"
+                     transfer-ownership="none"
+                     allow-none="1"
+                     doc="the name of the themed icon">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_icon_from_file"
+              c:identifier="gtk_window_set_icon_from_file"
+              doc="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."
+              version="2.2"
+              throws="1">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="filename" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_icon"
+              c:identifier="gtk_window_get_icon"
+              doc="Gets the value set by gtk_window_set_icon() (or if you&apos;ve
+called gtk_window_set_icon_list(), gets the first icon in
+the icon list).">
+        <return-value transfer-ownership="none" doc="icon for window">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </return-value>
+      </method>
+      <method name="get_icon_name"
+              c:identifier="gtk_window_get_icon_name"
+              doc="Returns the name of the themed icon for the window,
+see gtk_window_set_icon_name().
+no themed icon"
+              version="2.6">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+      <method name="set_modal"
+              c:identifier="gtk_window_set_modal"
+              doc="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=&quot;gtk-X11-arch&quot;&gt;window managers&lt;/link&gt;
+will then disallow lowering the dialog below the parent.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="modal" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_modal"
+              c:identifier="gtk_window_get_modal"
+              doc="Returns whether the window is modal. See gtk_window_set_modal().
+establishes a grab when shown">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="add_mnemonic"
+              c:identifier="gtk_window_add_mnemonic"
+              doc="Adds a mnemonic to this window.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="keyval" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="remove_mnemonic"
+              c:identifier="gtk_window_remove_mnemonic"
+              doc="Removes a mnemonic from this window.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="keyval" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="target" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="mnemonic_activate"
+              c:identifier="gtk_window_mnemonic_activate"
+              doc="Activates the targets associated with the mnemonic.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="keyval" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+          <parameter name="modifier" transfer-ownership="none">
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_mnemonic_modifier"
+              c:identifier="gtk_window_set_mnemonic_modifier"
+              doc="mnemonics on this window.
+Sets the mnemonic modifier for this window.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="modifier" transfer-ownership="none">
+            <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_mnemonic_modifier"
+              c:identifier="gtk_window_get_mnemonic_modifier"
+              doc="Returns the mnemonic modifier for this window. See
+gtk_window_set_mnemonic_modifier().
+mnemonics on this window.">
+        <return-value transfer-ownership="full">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </return-value>
+      </method>
+      <method name="activate_key"
+              c:identifier="gtk_window_activate_key"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="propagate_key_event"
+              c:identifier="gtk_window_propagate_key_event"
+              doc="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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="event" transfer-ownership="none">
+            <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="present"
+              c:identifier="gtk_window_present"
+              doc="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&apos;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&apos;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().">
+        <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"
+              doc="button or key press event) which triggered this call
+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."
+              version="2.8">
+        <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>
+        </parameters>
+      </method>
+      <method name="iconify"
+              c:identifier="gtk_window_iconify"
+              doc="Asks to iconify (i.e. minimize) the specified @window. Note that
+you shouldn&apos;t assume the window is definitely iconified afterward,
+because other entities (e.g. the user or &lt;link
+linkend=&quot;gtk-X11-arch&quot;&gt;window manager&lt;/link&gt;) could deiconify it
+again, or there may not be a window manager in which case
+iconification isn&apos;t possible, etc. But normally the window will end
+up iconified. Just don&apos;t write code that crashes if not.
+It&apos;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 &quot;window-state-event&quot; signal
+on #GtkWidget.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="deiconify"
+              c:identifier="gtk_window_deiconify"
+              doc="Asks to deiconify (i.e. unminimize) the specified @window. Note
+that you shouldn&apos;t assume the window is definitely deiconified
+afterward, because other entities (e.g. the user or &lt;link
+linkend=&quot;gtk-X11-arch&quot;&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 &quot;window-state-event&quot; signal
+on #GtkWidget.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="stick"
+              c:identifier="gtk_window_stick"
+              doc="Asks to stick @window, which means that it will appear on all user
+desktops. Note that you shouldn&apos;t assume the window is definitely
+stuck afterward, because other entities (e.g. the user or &lt;link
+linkend=&quot;gtk-X11-arch&quot;&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&apos;t
+write code that crashes if not.
+It&apos;s permitted to call this function before showing a window.
+You can track stickiness via the &quot;window-state-event&quot; signal
+on #GtkWidget.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unstick"
+              c:identifier="gtk_window_unstick"
+              doc="Asks to unstick @window, which means that it will appear on only
+one of the user&apos;s desktops. Note that you shouldn&apos;t assume the
+window is definitely unstuck afterward, because other entities
+(e.g. the user or &lt;link linkend=&quot;gtk-X11-arch&quot;&gt;window
+manager&lt;/link&gt;) could stick it again. But normally the window will
+end up stuck. Just don&apos;t write code that crashes if not.
+You can track stickiness via the &quot;window-state-event&quot; signal
+on #GtkWidget.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="maximize"
+              c:identifier="gtk_window_maximize"
+              doc="Asks to maximize @window, so that it becomes full-screen. Note that
+you shouldn&apos;t assume the window is definitely maximized afterward,
+because other entities (e.g. the user or &lt;link
+linkend=&quot;gtk-X11-arch&quot;&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&apos;t write code
+that crashes if not.
+It&apos;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 &quot;window-state-event&quot; signal
+on #GtkWidget.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unmaximize"
+              c:identifier="gtk_window_unmaximize"
+              doc="Asks to unmaximize @window. Note that you shouldn&apos;t assume the
+window is definitely unmaximized afterward, because other entities
+(e.g. the user or &lt;link linkend=&quot;gtk-X11-arch&quot;&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&apos;t write code that crashes if not.
+You can track maximization via the &quot;window-state-event&quot; signal
+on #GtkWidget.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="fullscreen"
+              c:identifier="gtk_window_fullscreen"
+              doc="Asks to place @window in the fullscreen state. Note that you
+shouldn&apos;t assume the window is definitely full screen afterward,
+because other entities (e.g. the user or &lt;link
+linkend=&quot;gtk-X11-arch&quot;&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&apos;t write code that crashes if not.
+You can track the fullscreen state via the &quot;window-state-event&quot; signal
+on #GtkWidget."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="unfullscreen"
+              c:identifier="gtk_window_unfullscreen"
+              doc="Asks to toggle off the fullscreen state for @window. Note that you
+shouldn&apos;t assume the window is definitely not full screen
+afterward, because other entities (e.g. the user or &lt;link
+linkend=&quot;gtk-X11-arch&quot;&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&apos;t write code that crashes if not.
+You can track the fullscreen state via the &quot;window-state-event&quot; signal
+on #GtkWidget."
+              version="2.2">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="set_keep_above"
+              c:identifier="gtk_window_set_keep_above"
+              doc="Asks to keep @window above, so that it stays on top. Note that
+you shouldn&apos;t assume the window is definitely above afterward,
+because other entities (e.g. the user or &lt;link
+linkend=&quot;gtk-X11-arch&quot;&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&apos;t write code
+that crashes if not.
+It&apos;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 &quot;window-state-event&quot; signal
+on #GtkWidget.
+Note that, according to the &lt;ulink
+url=&quot;http://www.freedesktop.org/Standards/wm-spec&quot;&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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_keep_below"
+              c:identifier="gtk_window_set_keep_below"
+              doc="Asks to keep @window below, so that it stays in bottom. Note that
+you shouldn&apos;t assume the window is definitely below afterward,
+because other entities (e.g. the user or &lt;link
+linkend=&quot;gtk-X11-arch&quot;&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&apos;t write code
+that crashes if not.
+It&apos;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 &quot;window-state-event&quot; signal
+on #GtkWidget.
+Note that, according to the &lt;ulink
+url=&quot;http://www.freedesktop.org/Standards/wm-spec&quot;&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."
+              version="2.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_resize_drag"
+              c:identifier="gtk_window_begin_resize_drag"
+              doc="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=&quot;gtk-X11-arch&quot;&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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="edge" transfer-ownership="none">
+            <type name="Gdk.WindowEdge" c:type="GdkWindowEdge"/>
+          </parameter>
+          <parameter name="button" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="root_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="root_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="begin_move_drag"
+              c:identifier="gtk_window_begin_move_drag"
+              doc="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=&quot;gtk-X11-arch&quot;&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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="button" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="root_x" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="root_y" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="timestamp" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_policy" c:identifier="gtk_window_set_policy">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="allow_shrink" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="allow_grow" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="auto_shrink" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_default_size"
+              c:identifier="gtk_window_set_default_size"
+              doc="Sets the default size of a window. If the window&apos;s &quot;natural&quot; 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 &quot;natural&quot; default size (the size request of the window).
+For more control over a window&apos;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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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="get_default_size"
+              c:identifier="gtk_window_get_default_size"
+              doc="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 &quot;natural&quot; size of the window will be
+used.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the default width, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="location to store the default height, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="resize"
+              c:identifier="gtk_window_resize"
+              doc="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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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="get_size"
+              c:identifier="gtk_window_get_size"
+              doc="Obtains the current size of @window. If @window is not onscreen,
+it returns the size GTK+ will suggest to the &lt;link
+linkend=&quot;gtk-X11-arch&quot;&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&apos;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
+&quot;configure-event&quot; 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&apos;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&apos;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&apos;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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for width, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="height"
+                     direction="out"
+                     transfer-ownership="full"
+                     allow-none="1"
+                     doc="return location for height, or %NULL">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move"
+              c:identifier="gtk_window_move"
+              doc="Asks the &lt;link linkend=&quot;gtk-X11-arch&quot;&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=&quot;http://www.freedesktop.org/Standards/wm-spec&quot;&gt;
+http://www.freedesktop.org/Standards/wm-spec&lt;/ulink&gt; has a
+nice table of gravities in the &quot;implementation notes&quot; section.
+The gtk_window_get_position() documentation may also be relevant.">
+        <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>
+        </parameters>
+      </method>
+      <method name="get_position"
+              c:identifier="gtk_window_get_position"
+              doc="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&apos;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 &quot;best guess&quot; 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&apos;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&apos;s window
+positions, you should know that it&apos;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
+&quot;GnomeClient&quot; object in the GNOME libraries for example) and allow
+the window manager to save your window sizes and positions.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="root_x" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="root_y" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="parse_geometry"
+              c:identifier="gtk_window_parse_geometry"
+              doc="Parses a standard X Window System geometry string - see the
+manual page for X (type &apos;man X&apos;) 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 &quot;final&quot; 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, &quot;Failed to parse &apos;%s&apos;\n&quot;, argv[1]);
+}
+gtk_widget_show_all (window);
+gtk_main ();
+return 0;
+}
+]|">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="geometry" transfer-ownership="none">
+            <type name="utf8" c:type="gchar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_group"
+              c:identifier="gtk_window_get_group"
+              doc="Returns the group for @window or the default group, if
+window group."
+              version="2.10">
+        <return-value transfer-ownership="none"
+                      doc="the #GtkWindowGroup for a window or the default group">
+          <type name="WindowGroup" c:type="GtkWindowGroup*"/>
+        </return-value>
+      </method>
+      <method name="reshow_with_initial_size"
+              c:identifier="gtk_window_reshow_with_initial_size"
+              doc="Hides @window, then reshows it, resetting the
+default size and position of the window. Used
+by GUI builders only.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_window_type"
+              c:identifier="gtk_window_get_window_type"
+              doc="Gets the type of the window. See #GtkWindowType."
+              version="2.20">
+        <return-value transfer-ownership="full">
+          <type name="WindowType" c:type="GtkWindowType"/>
+        </return-value>
+      </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="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>
+      <property name="accept-focus"
+                version="2.4"
+                writable="1"
+                doc="Whether the window should receive the input focus.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="allow-grow" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="allow-shrink" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="decorated"
+                version="2.4"
+                writable="1"
+                doc="Whether the window should be decorated by the window manager.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="default-height" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="default-width" writable="1">
+        <type name="int" c:type="gint"/>
+      </property>
+      <property name="deletable"
+                version="2.10"
+                writable="1"
+                doc="Whether the window frame should have a close button.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="destroy-with-parent" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="focus-on-map"
+                version="2.6"
+                writable="1"
+                doc="Whether the window should receive the input focus when mapped.">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="gravity"
+                version="2.4"
+                writable="1"
+                doc="The window gravity of the window. See gtk_window_move() and #GdkGravity for
+more details about window gravity.">
+        <type name="Gdk.Gravity" c:type="GdkGravity"/>
+      </property>
+      <property name="has-toplevel-focus">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="icon" writable="1">
+        <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf"/>
+      </property>
+      <property name="icon-name"
+                version="2.6"
+                writable="1"
+                doc="The :icon-name property specifies the name of the themed icon to
+use as the window icon. See #GtkIconTheme for more details.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="is-active">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="mnemonics-visible" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="modal" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="opacity"
+                version="2.12"
+                writable="1"
+                doc="The requested opacity of the window. See gtk_window_set_opacity() for
+more details about window opacity.">
+        <type name="double" c:type="gdouble"/>
+      </property>
+      <property name="resizable" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="role" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="screen" writable="1">
+        <type name="Gdk.Screen" c:type="GdkScreen"/>
+      </property>
+      <property name="skip-pager-hint" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="skip-taskbar-hint" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="startup-id"
+                version="2.12"
+                readable="0"
+                writable="1"
+                doc="The :startup-id is a write-only property for setting window&apos;s
+startup notification identifier. See gtk_window_set_startup_id()
+for more details.">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="title" writable="1">
+        <type name="utf8" c:type="gchararray"/>
+      </property>
+      <property name="transient-for"
+                version="2.10"
+                writable="1"
+                construct="1"
+                doc="The transient parent of the window. See gtk_window_set_transient_for() for
+more details about transient windows.">
+        <type name="Window" c:type="GtkWindow"/>
+      </property>
+      <property name="type" writable="1" construct-only="1">
+        <type name="WindowType" c:type="GtkWindowType"/>
+      </property>
+      <property name="type-hint" writable="1">
+        <type name="Gdk.WindowTypeHint" c:type="GdkWindowTypeHint"/>
+      </property>
+      <property name="urgency-hint" writable="1">
+        <type name="boolean" c:type="gboolean"/>
+      </property>
+      <property name="window-position" writable="1">
+        <type name="WindowPosition" c:type="GtkWindowPosition"/>
+      </property>
+      <field name="bin">
+        <type name="Bin" c:type="GtkBin"/>
+      </field>
+      <field name="title">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="wmclass_name">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="wmclass_class">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="wm_role">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="focus_widget">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="default_widget">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </field>
+      <field name="transient_parent">
+        <type name="Window" c:type="GtkWindow*"/>
+      </field>
+      <field name="geometry_info">
+        <type name="WindowGeometryInfo" c:type="GtkWindowGeometryInfo*"/>
+      </field>
+      <field name="frame">
+        <type name="Gdk.Window" c:type="GdkWindow*"/>
+      </field>
+      <field name="group">
+        <type name="WindowGroup" c:type="GtkWindowGroup*"/>
+      </field>
+      <field name="configure_request_count">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="allow_shrink" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="allow_grow" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="configure_notify_received" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="need_default_position" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="need_default_size" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="position" bits="3">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="type" bits="4">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_user_ref_count" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_focus" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="modal" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="destroy_with_parent" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_frame" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="iconify_initially" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="stick_initially" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="maximize_initially" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="decorated" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="type_hint" bits="3">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="gravity" bits="5">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_active" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="has_toplevel_focus" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="frame_left">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="frame_top">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="frame_right">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="frame_bottom">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="keys_changed_handler">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="mnemonic_modifier">
+        <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+      </field>
+      <field name="screen">
+        <type name="Gdk.Screen" c:type="GdkScreen*"/>
+      </field>
+      <glib:signal name="activate-default"
+                   doc="The ::activate-default signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user activates the default widget
+of @window.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="activate-focus"
+                   doc="The ::activate-default signal is a
+&lt;link linkend=&quot;keybinding-signals&quot;&gt;keybinding signal&lt;/link&gt;
+which gets emitted when the user activates the currently
+focused widget of @window.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="frame-event">
+        <return-value transfer-ownership="full">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Gdk.Event" c:type="GdkEvent"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
+      <glib:signal name="keys-changed"
+                   doc="The ::keys-changed signal gets emitted when the set of accelerators
+or mnemonics that are associated with @window changes.">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </glib:signal>
+      <glib:signal name="set-focus">
+        <return-value transfer-ownership="full">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="object" transfer-ownership="none">
+            <type name="Widget" c:type="GtkWidget"/>
+          </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" c:type="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" c:type="frame_event">
+          <return-value transfer-ownership="none">
+            <type name="boolean" 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" c:type="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" c:type="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" c:type="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" c:type="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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_gtk_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="WindowGeometryInfo" c:type="GtkWindowGeometryInfo">
+    </record>
+    <class name="WindowGroup"
+           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="Creates a new #GtkWindowGroup object. Grabs added with
+gtk_grab_add() only affect windows within the same #GtkWindowGroup.">
+        <return-value transfer-ownership="full">
+          <type name="WindowGroup" c:type="GtkWindowGroup*"/>
+        </return-value>
+      </constructor>
+      <method name="add_window"
+              c:identifier="gtk_window_group_add_window"
+              doc="Adds a window to a #GtkWindowGroup.">
+        <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>
+      </method>
+      <method name="remove_window"
+              c:identifier="gtk_window_group_remove_window"
+              doc="Removes a window from a #GtkWindowGroup.">
+        <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>
+      </method>
+      <method name="list_windows"
+              c:identifier="gtk_window_group_list_windows"
+              doc="Returns a list of the #GtkWindows that belong to @window_group.
+windows inside the group."
+              version="2.14">
+        <return-value transfer-ownership="container"
+                      doc="A newly-allocated list of">
+          <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="grabs">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </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">
+        <callback name="gtk_reserved1" c:type="_gtk_reserved1">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved2">
+        <callback name="gtk_reserved2" c:type="_gtk_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved3">
+        <callback name="gtk_reserved3" c:type="_gtk_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="gtk_reserved4">
+        <callback name="gtk_reserved4" c:type="_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="uint" 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="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" 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>
+    <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="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="to activate the accelerator.
+Finds the first accelerator in any #GtkAccelGroup attached
+to @object that matches @accel_key and @accel_mods, and
+activates that accelerator.">
+      <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="accel_key" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="accel_mods" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="accel_groups_from_object"
+              c:identifier="gtk_accel_groups_from_object"
+              doc="Gets a list of all accel groups which are attached to @object.">
+      <return-value transfer-ownership="none"
+                    doc="a list of all accel groups which are attached to @object">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="AccelGroup"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <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="Gets the value set by gtk_accelerator_set_default_mod_mask().">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+    </function>
+    <function name="accelerator_get_label"
+              c:identifier="gtk_accelerator_get_label"
+              doc="Converts an accelerator keyval and modifier mask into a string
+which can be used to represent the accelerator to the user."
+              version="2.6">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="accelerator_key" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="accelerator_mods" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="accelerator_name"
+              c:identifier="gtk_accelerator_name"
+              doc="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 &quot;&amp;lt;Control&amp;gt;q&quot;.
+If you need to display accelerators in the user interface,
+see gtk_accelerator_get_label().">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="accelerator_key" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="accelerator_mods" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="accelerator_parse"
+              c:identifier="gtk_accelerator_parse"
+              doc="Parses a string representing an accelerator. The
+format looks like &quot;&amp;lt;Control&amp;gt;a&quot; or &quot;&amp;lt;Shift&amp;gt;&amp;lt;Alt&amp;gt;F1&quot; or
+&quot;&amp;lt;Release&amp;gt;z&quot; (the last one is for key release).
+The parser is fairly liberal and allows lower or upper case,
+and also abbreviations such as &quot;&amp;lt;Ctl&amp;gt;&quot; and &quot;&amp;lt;Ctrl&amp;gt;&quot;.
+If the parse fails, @accelerator_key and @accelerator_mods will
+be set to 0 (zero).">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="accelerator" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="accelerator_key"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="uint" c:type="guint*"/>
+        </parameter>
+        <parameter name="accelerator_mods" transfer-ownership="none">
+          <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="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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="default_mod_mask" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="accelerator_valid"
+              c:identifier="gtk_accelerator_valid"
+              doc="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 &quot;Ctrl+a&quot; accelerator.
+But, you can&apos;t, for instance, use the #GDK_Control_L keyval
+as an accelerator.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="alternative_dialog_button_order"
+              c:identifier="gtk_alternative_dialog_button_order"
+              doc="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."
+              version="2.6">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="screen"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a #GdkScreen, or %NULL to use the default screen">
+          <type name="Gdk.Screen" c:type="GdkScreen*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="binding_entry_add_signal"
+              c:identifier="gtk_binding_entry_add_signal"
+              doc="Override or install a new key binding for @keyval with @modifiers on
+emitted on the target widget, with @n_args @Varargs used as
+arguments.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="binding_set" transfer-ownership="none">
+          <type name="BindingSet" c:type="GtkBindingSet*"/>
+        </parameter>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+        <parameter name="signal_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="n_args" transfer-ownership="none">
+          <type name="uint" 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="Override or install a new key binding for @keyval with @modifiers on">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="binding_set" transfer-ownership="none">
+          <type name="BindingSet" c:type="GtkBindingSet*"/>
+        </parameter>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+        <parameter name="signal_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="binding_args" transfer-ownership="none">
+          <type name="GLib.SList" c:type="GSList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="binding_entry_clear"
+              c:identifier="gtk_binding_entry_clear"
+              doc="Clears a binding entry."
+              deprecated="Use gtk_binding_entry_remove() instead."
+              deprecated-version="2.12">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="binding_set" transfer-ownership="none">
+          <type name="BindingSet" c:type="GtkBindingSet*"/>
+        </parameter>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="binding_entry_remove"
+              c:identifier="gtk_binding_entry_remove"
+              doc="Remove a binding previously installed via
+gtk_binding_entry_add_signal() on @binding_set.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="binding_set" transfer-ownership="none">
+          <type name="BindingSet" c:type="GtkBindingSet*"/>
+        </parameter>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="binding_entry_skip"
+              c:identifier="gtk_binding_entry_skip"
+              doc="Install a binding on @binding_set which causes key lookups
+to be aborted, to prevent bindings from lower priority sets
+to be activated."
+              version="2.12">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="binding_set" transfer-ownership="none">
+          <type name="BindingSet" c:type="GtkBindingSet*"/>
+        </parameter>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="binding_parse_binding"
+              c:identifier="gtk_binding_parse_binding"
+              doc="Parse a binding entry from a gtkrc file."
+              deprecated="There should be no need to call this function outside GTK+."
+              deprecated-version="2.12">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="scanner" transfer-ownership="none">
+          <type name="GLib.Scanner" c:type="GScanner*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="binding_set_by_class"
+              c:identifier="gtk_binding_set_by_class"
+              doc="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.">
+      <return-value transfer-ownership="full">
+        <type name="BindingSet" c:type="GtkBindingSet*"/>
+      </return-value>
+      <parameters>
+        <parameter name="object_class" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="binding_set_find"
+              c:identifier="gtk_binding_set_find"
+              doc="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().">
+      <return-value transfer-ownership="full">
+        <type name="BindingSet" c:type="GtkBindingSet*"/>
+      </return-value>
+      <parameters>
+        <parameter name="set_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bindings_activate"
+              c:identifier="gtk_bindings_activate"
+              doc="Find a key binding matching @keyval and @modifiers and activate the
+binding on @object.">
+      <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="GtkObject*"/>
+        </parameter>
+        <parameter name="keyval" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bindings_activate_event"
+              c:identifier="gtk_bindings_activate_event"
+              doc="Looks up key bindings for @object to find one matching"
+              version="2.4">
+      <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="GtkObject*"/>
+        </parameter>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Gdk.EventKey" c:type="GdkEventKey*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="check_version"
+              c:identifier="gtk_check_version"
+              doc="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&apos;t loaded
+into an incompatible version of GTK+. However, such a
+a check isn&apos;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.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="required_major" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="required_minor" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="required_micro" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="disable_setlocale"
+              c:identifier="gtk_disable_setlocale"
+              doc="Prevents gtk_init(), gtk_init_check(), gtk_init_with_args() and
+gtk_parse_args() from automatically
+calling &lt;literal&gt;setlocale (LC_ALL, &quot;&quot;)&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&apos;s locale, or if
+you wanted to set different values for different locale categories.
+Most programs should not need to call this function.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+    </function>
+    <function name="drag_begin"
+              c:identifier="gtk_drag_begin"
+              doc="source can provide the data.
+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.">
+      <return-value transfer-ownership="full">
+        <type name="Gdk.DragContext" c:type="GdkDragContext*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="targets" transfer-ownership="none" doc="in which the">
+          <type name="TargetList" c:type="GtkTargetList*"/>
+        </parameter>
+        <parameter name="actions" transfer-ownership="none">
+          <type name="Gdk.DragAction" c:type="GdkDragAction"/>
+        </parameter>
+        <parameter name="button" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Gdk.Event" c:type="GdkEvent*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_check_threshold"
+              c:identifier="gtk_drag_check_threshold"
+              doc="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.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="start_x" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="start_y" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="current_x" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="current_y" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_dest_add_image_targets"
+              c:identifier="gtk_drag_dest_add_image_targets"
+              doc="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()."
+              version="2.6">
+      <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_dest_add_text_targets"
+              c:identifier="gtk_drag_dest_add_text_targets"
+              doc="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()."
+              version="2.6">
+      <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_dest_add_uri_targets"
+              c:identifier="gtk_drag_dest_add_uri_targets"
+              doc="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()."
+              version="2.6">
+      <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_dest_find_target"
+              c:identifier="gtk_drag_dest_find_target"
+              doc="gtk_drag_dest_get_target_list (@widget).
+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.">
+      <return-value transfer-ownership="full">
+        <type name="Gdk.Atom" c:type="GdkAtom"/>
+      </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_list"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="list of droppable targets, or %NULL to use">
+          <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="Returns the list of targets this widget can accept from
+drag-and-drop.">
+      <return-value transfer-ownership="full">
+        <type name="TargetList" c:type="GtkTargetList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_dest_get_track_motion"
+              c:identifier="gtk_drag_dest_get_track_motion"
+              doc="Returns whether the widget has been configured to always
+emit ::drag-motion signals."
+              version="2.10">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_dest_set"
+              c:identifier="gtk_drag_dest_set"
+              doc="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().
+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&apos;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&apos;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&apos;s no way to set a default action here, you can use the
+#GtkWidget:drag-motion callback for that. Here&apos;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);
+}
+]|">
+      <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="flags" transfer-ownership="none">
+          <type name="DestDefaults" c:type="GtkDestDefaults"/>
+        </parameter>
+        <parameter name="targets"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a pointer to an array of #GtkTargetEntry&lt;!-- --&gt;s">
+          <array length="3" c:type="GtkTargetEntry*">
+            <type name="TargetEntry"/>
+          </array>
+        </parameter>
+        <parameter name="n_targets" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="actions" transfer-ownership="none">
+          <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="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_dest_set_target_list"
+              c:identifier="gtk_drag_dest_set_target_list"
+              doc="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().">
+      <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="target_list"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="list of droppable targets, or %NULL for none">
+          <type name="TargetList" c:type="GtkTargetList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_dest_set_track_motion"
+              c:identifier="gtk_drag_dest_set_track_motion"
+              doc="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."
+              version="2.10">
+      <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="track_motion" transfer-ownership="none">
+          <type name="boolean" 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="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="del" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="uint32" 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="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_get_source_widget"
+              c:identifier="gtk_drag_get_source_widget">
+      <return-value transfer-ownership="full">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <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_default_icon"
+              c:identifier="gtk_drag_set_default_icon"
+              doc="Changes the default drag icon. GTK+ retains references for the
+arguments, and will release them when they are no longer needed.
+changing the stock pixbuf for #GTK_STOCK_DND instead."
+              deprecated="Change the default drag icon via the stock system by">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="colormap" transfer-ownership="none">
+          <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="pixmap" transfer-ownership="none">
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </parameter>
+        <parameter name="mask"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the transparency mask for an image, or %NULL">
+          <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+        </parameter>
+        <parameter name="hot_x" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="hot_y" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_set_icon_default"
+              c:identifier="gtk_drag_set_icon_default"
+              doc="th a  context for the source side of a drag)
+Sets the icon for a particular drag to the default
+icon.">
+      <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>
+      </parameters>
+    </function>
+    <function name="drag_set_icon_name"
+              c:identifier="gtk_drag_set_icon_name"
+              doc="with a context for the source side of a drag)
+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"
+              version="2.8">
+      <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="icon_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="hot_x" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="hot_y" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_set_icon_pixbuf"
+              c:identifier="gtk_drag_set_icon_pixbuf"
+              doc="with a  context for the source side of a drag)
+Sets @pixbuf as the icon for a given drag.">
+      <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="pixbuf" transfer-ownership="none">
+          <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
+        </parameter>
+        <parameter name="hot_x" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="hot_y" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_set_icon_pixmap"
+              c:identifier="gtk_drag_set_icon_pixmap"
+              doc="with a  context for the source side of a drag)
+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.">
+      <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="colormap" transfer-ownership="none">
+          <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="pixmap" transfer-ownership="none">
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </parameter>
+        <parameter name="mask"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the transparency mask for the icon or %NULL for none.">
+          <type name="Gdk.Bitmap" c:type="GdkBitmap*"/>
+        </parameter>
+        <parameter name="hot_x" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="hot_y" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_set_icon_stock"
+              c:identifier="gtk_drag_set_icon_stock"
+              doc="with a  context for the source side of a drag)
+Sets the icon for a given drag from a stock ID.">
+      <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="stock_id" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="hot_x" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="hot_y" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_set_icon_widget"
+              c:identifier="gtk_drag_set_icon_widget"
+              doc="th a  context for the source side of a drag)
+Changes the icon for a widget to a given widget. GTK+
+will not destroy the icon, so if you don&apos;t want
+it to persist, you should connect to the &quot;drag-end&quot;
+signal and destroy it yourself.">
+      <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="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="hot_x" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="hot_y" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_source_add_image_targets"
+              c:identifier="gtk_drag_source_add_image_targets"
+              doc="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()."
+              version="2.6">
+      <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_source_add_text_targets"
+              c:identifier="gtk_drag_source_add_text_targets"
+              doc="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()."
+              version="2.6">
+      <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_source_add_uri_targets"
+              c:identifier="gtk_drag_source_add_uri_targets"
+              doc="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()."
+              version="2.6">
+      <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_source_get_target_list"
+              c:identifier="gtk_drag_source_get_target_list"
+              doc="Gets the list of targets this widget can provide for
+drag-and-drop."
+              version="2.4">
+      <return-value transfer-ownership="full">
+        <type name="TargetList" c:type="GtkTargetList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_source_set"
+              c:identifier="gtk_drag_source_set"
+              doc="may be %NULL
+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.">
+      <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="start_button_mask" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+        <parameter name="targets"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the table of targets that the drag will support,">
+          <array length="3" c:type="GtkTargetEntry*">
+            <type name="TargetEntry"/>
+          </array>
+        </parameter>
+        <parameter name="n_targets" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="actions" transfer-ownership="none">
+          <type name="Gdk.DragAction" c:type="GdkDragAction"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_source_set_icon"
+              c:identifier="gtk_drag_source_set_icon"
+              doc="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.">
+      <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="colormap" transfer-ownership="none">
+          <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="pixmap" transfer-ownership="none">
+          <type name="Gdk.Pixmap" c:type="GdkPixmap*"/>
+        </parameter>
+        <parameter name="mask"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the transparency mask for an image.">
+          <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"
+              doc="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."
+              version="2.8">
+      <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="icon_name" transfer-ownership="none">
+          <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="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.">
+      <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="pixbuf" transfer-ownership="none">
+          <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="Sets the icon that will be used for drags from a particular source
+to a stock icon.">
+      <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="stock_id" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="drag_source_set_target_list"
+              c:identifier="gtk_drag_source_set_target_list"
+              doc="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()."
+              version="2.4">
+      <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="target_list"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="list of draggable targets, or %NULL for none">
+          <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_arrow"
+              c:identifier="gtk_draw_arrow"
+              doc="Draws an arrow in the given rectangle on @window using the given
+parameters. @arrow_type determines the direction of the arrow."
+              deprecated="Use gtk_paint_arrow() instead."
+              deprecated-version="2.0">
+      <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="arrow_type" transfer-ownership="none">
+          <type name="ArrowType" c:type="GtkArrowType"/>
+        </parameter>
+        <parameter name="fill" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </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>
+    </function>
+    <function name="draw_box"
+              c:identifier="gtk_draw_box"
+              doc="Draws a box on @window with the given parameters."
+              deprecated="Use gtk_paint_box() instead."
+              deprecated-version="2.0">
+      <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="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>
+    </function>
+    <function name="draw_box_gap"
+              c:identifier="gtk_draw_box_gap"
+              doc="Draws a box in @window using the given style and state and shadow type,
+leaving a gap in one side."
+              deprecated="Use gtk_paint_box_gap() instead."
+              deprecated-version="2.0">
+      <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="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>
+        <parameter name="gap_side" transfer-ownership="none">
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </parameter>
+        <parameter name="gap_x" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="gap_width" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_check"
+              c:identifier="gtk_draw_check"
+              doc="Draws a check button indicator in the given rectangle on @window with
+the given parameters."
+              deprecated="Use gtk_paint_check() instead."
+              deprecated-version="2.0">
+      <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="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>
+    </function>
+    <function name="draw_diamond"
+              c:identifier="gtk_draw_diamond"
+              doc="Draws a diamond in the given rectangle on @window using the given
+parameters."
+              deprecated="Use gtk_paint_diamond() instead."
+              deprecated-version="2.0">
+      <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="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>
+    </function>
+    <function name="draw_expander"
+              c:identifier="gtk_draw_expander"
+              doc="Draws an expander as used in #GtkTreeView."
+              deprecated="Use gtk_paint_expander() instead."
+              deprecated-version="2.0">
+      <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="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="expander_style" transfer-ownership="none">
+          <type name="ExpanderStyle" c:type="GtkExpanderStyle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_extension"
+              c:identifier="gtk_draw_extension"
+              doc="Draws an extension, i.e. a notebook tab."
+              deprecated="Use gtk_paint_extension() instead."
+              deprecated-version="2.0">
+      <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="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>
+        <parameter name="gap_side" transfer-ownership="none">
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_flat_box"
+              c:identifier="gtk_draw_flat_box"
+              doc="Draws a flat box on @window with the given parameters."
+              deprecated="Use gtk_paint_flat_box() instead."
+              deprecated-version="2.0">
+      <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="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>
+    </function>
+    <function name="draw_focus"
+              c:identifier="gtk_draw_focus"
+              doc="Draws a focus indicator around the given rectangle on @window using the
+given style."
+              deprecated="Use gtk_paint_focus() instead."
+              deprecated-version="2.0">
+      <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="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>
+    </function>
+    <function name="draw_handle"
+              c:identifier="gtk_draw_handle"
+              doc="Draws a handle as used in #GtkHandleBox and #GtkPaned."
+              deprecated="Use gtk_paint_handle() instead."
+              deprecated-version="2.0">
+      <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="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>
+        <parameter name="orientation" transfer-ownership="none">
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_hline"
+              c:identifier="gtk_draw_hline"
+              doc="Draws a horizontal line from (@x1, @y) to (@x2, @y) in @window
+using the given style and state."
+              deprecated="Use gtk_paint_hline() instead."
+              deprecated-version="2.0">
+      <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="x1" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="x2" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_insertion_cursor"
+              c:identifier="gtk_draw_insertion_cursor"
+              doc="output should not be clipped
+right-to-left. Should never be #GTK_TEXT_DIR_NONE
+cursor. Should be %FALSE unless the cursor is split.
+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."
+              version="2.4">
+      <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="drawable" transfer-ownership="none">
+          <type name="Gdk.Drawable" c:type="GdkDrawable*"/>
+        </parameter>
+        <parameter name="area"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="rectangle to which the output is clipped, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="location" transfer-ownership="none">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="is_primary" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="direction" transfer-ownership="none">
+          <type name="TextDirection" c:type="GtkTextDirection"/>
+        </parameter>
+        <parameter name="draw_arrow" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_layout"
+              c:identifier="gtk_draw_layout"
+              doc="graphics context of @style
+Draws a layout on @window using the given parameters.">
+      <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="boolean" c:type="gboolean"/>
+        </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="layout" transfer-ownership="none">
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_option"
+              c:identifier="gtk_draw_option"
+              doc="Draws a radio button indicator in the given rectangle on @window with
+the given parameters."
+              deprecated="Use gtk_paint_option() instead."
+              deprecated-version="2.0">
+      <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="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>
+    </function>
+    <function name="draw_polygon"
+              c:identifier="gtk_draw_polygon"
+              doc="Draws a polygon on @window with the given parameters."
+              deprecated="Use gtk_paint_polygon() instead."
+              deprecated-version="2.0">
+      <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="points" transfer-ownership="none">
+          <type name="Gdk.Point" c:type="GdkPoint*"/>
+        </parameter>
+        <parameter name="npoints" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="fill" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_resize_grip"
+              c:identifier="gtk_draw_resize_grip"
+              doc="Draws a resize grip in the given rectangle on @window using the given
+parameters."
+              deprecated="Use gtk_paint_resize_grip() instead."
+              deprecated-version="2.0">
+      <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="edge" transfer-ownership="none">
+          <type name="Gdk.WindowEdge" c:type="GdkWindowEdge"/>
+        </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>
+    </function>
+    <function name="draw_shadow"
+              c:identifier="gtk_draw_shadow"
+              doc="Draws a shadow around the given rectangle in @window
+using the given style and state and shadow type."
+              deprecated="Use gtk_paint_shadow() instead."
+              deprecated-version="2.0">
+      <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="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>
+    </function>
+    <function name="draw_shadow_gap"
+              c:identifier="gtk_draw_shadow_gap"
+              doc="Draws a shadow around the given rectangle in @window
+using the given style and state and shadow type, leaving a
+gap in one side."
+              deprecated="Use gtk_paint_shadow_gap() instead."
+              deprecated-version="2.0">
+      <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="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>
+        <parameter name="gap_side" transfer-ownership="none">
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </parameter>
+        <parameter name="gap_x" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="gap_width" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_slider"
+              c:identifier="gtk_draw_slider"
+              doc="Draws a slider in the given rectangle on @window using the
+given style and orientation.">
+      <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="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>
+        <parameter name="orientation" transfer-ownership="none">
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_string"
+              c:identifier="gtk_draw_string"
+              doc="Draws a text string on @window with the given parameters."
+              deprecated="Use gtk_paint_layout() instead."
+              deprecated-version="2.0">
+      <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="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="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="draw_tab"
+              c:identifier="gtk_draw_tab"
+              doc="Draws an option menu tab (i.e. the up and down pointing arrows)
+in the given rectangle on @window using the given parameters."
+              deprecated="Use gtk_paint_tab() instead."
+              deprecated-version="2.0">
+      <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="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>
+    </function>
+    <function name="draw_vline"
+              c:identifier="gtk_draw_vline"
+              doc="Draws a vertical line from (@x, @y1_) to (@x, @y2_) in @window
+using the given style and state."
+              deprecated="Use gtk_paint_vline() instead."
+              deprecated-version="2.0">
+      <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="y1_" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="y2_" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="events_pending" c:identifier="gtk_events_pending">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="exit" c:identifier="gtk_exit">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="error_code" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="false" c:identifier="gtk_false">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="gc_get" c:identifier="gtk_gc_get">
+      <return-value transfer-ownership="full">
+        <type name="Gdk.GC" c:type="GdkGC*"/>
+      </return-value>
+      <parameters>
+        <parameter name="depth" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="colormap" transfer-ownership="none">
+          <type name="Gdk.Colormap" c:type="GdkColormap*"/>
+        </parameter>
+        <parameter name="values" transfer-ownership="none">
+          <type name="Gdk.GCValues" c:type="GdkGCValues*"/>
+        </parameter>
+        <parameter name="values_mask" transfer-ownership="none">
+          <type name="Gdk.GCValuesMask" c:type="GdkGCValuesMask"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gc_release" c:identifier="gtk_gc_release">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="gc" transfer-ownership="none">
+          <type name="Gdk.GC" c:type="GdkGC*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_current_event"
+              c:identifier="gtk_get_current_event"
+              doc="Obtains a copy of the event currently being processed by GTK+.  For
+example, if you get a &quot;clicked&quot; signal from #GtkButton, the current
+event will be the #GdkEventButton that triggered the &quot;clicked&quot;
+signal. The returned event must be freed with gdk_event_free().
+If there is no current event, the function returns %NULL.">
+      <return-value transfer-ownership="full">
+        <type name="Gdk.Event" c:type="GdkEvent*"/>
+      </return-value>
+    </function>
+    <function name="get_current_event_state"
+              c:identifier="gtk_get_current_event_state"
+              doc="If there is a current event and it has a state field, place
+that state field in @state and return %TRUE, otherwise return
+%FALSE.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="state" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_current_event_time"
+              c:identifier="gtk_get_current_event_time"
+              doc="If there is a current event and it has a timestamp, return that
+timestamp, otherwise return %GDK_CURRENT_TIME.">
+      <return-value transfer-ownership="none">
+        <type name="uint32" c:type="guint32"/>
+      </return-value>
+    </function>
+    <function name="get_default_language"
+              c:identifier="gtk_get_default_language"
+              doc="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">
+      <return-value transfer-ownership="full">
+        <type name="Pango.Language" c:type="PangoLanguage*"/>
+      </return-value>
+    </function>
+    <function name="get_event_widget"
+              c:identifier="gtk_get_event_widget"
+              doc="If @event is %NULL or the event was not associated with any widget,
+returns %NULL, otherwise returns the widget that received the event
+originally.">
+      <return-value transfer-ownership="full">
+        <type name="Widget" c:type="GtkWidget*"/>
+      </return-value>
+      <parameters>
+        <parameter name="event" transfer-ownership="none">
+          <type name="Gdk.Event" c:type="GdkEvent*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_option_group"
+              c:identifier="gtk_get_option_group"
+              doc="when parsing the commandline arguments
+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+"
+              version="2.6">
+      <return-value transfer-ownership="full">
+        <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
+      </return-value>
+      <parameters>
+        <parameter name="open_default_display" transfer-ownership="none">
+          <type name="boolean" 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">
+      <return-value transfer-ownership="full">
+        <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="Looks up the icon size associated with @name.">
+      <return-value transfer-ownership="full">
+        <type name="IconSize" c:type="GtkIconSize"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="icon_size_get_name"
+              c:identifier="gtk_icon_size_get_name"
+              doc="Gets the canonical name of the given icon size. The returned string
+is statically allocated and should not be freed.">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none" doc="a #GtkIconSize.">
+          <type name="int" c:type="GtkIconSize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="icon_size_lookup"
+              c:identifier="gtk_icon_size_lookup"
+              doc="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&apos;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.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="size" transfer-ownership="none" doc="an icon size">
+          <type name="int" c:type="GtkIconSize"/>
+        </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="icon_size_lookup_for_settings"
+              c:identifier="gtk_icon_size_lookup_for_settings"
+              doc="which set of user preferences to used.
+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&apos;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."
+              version="2.2">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="settings" transfer-ownership="none">
+          <type name="Settings" c:type="GtkSettings*"/>
+        </parameter>
+        <parameter name="size" transfer-ownership="none" doc="an icon size">
+          <type name="int" c:type="GtkIconSize"/>
+        </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="icon_size_register"
+              c:identifier="gtk_icon_size_register"
+              doc="Registers a new icon size, along the same lines as #GTK_ICON_SIZE_MENU,
+etc. Returns the integer value for the size.">
+      <return-value transfer-ownership="full"
+                    doc="integer value representing the size">
+        <type name="int" c:type="GtkIconSize"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </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>
+    </function>
+    <function name="icon_size_register_alias"
+              c:identifier="gtk_icon_size_register_alias"
+              doc="Registers @alias as another name for @target.
+So calling gtk_icon_size_from_name() with @alias as argument
+will return @target.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="alias" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="target"
+                   transfer-ownership="none"
+                   doc="an existing icon size">
+          <type name="int" c:type="GtkIconSize"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="idle_add" c:identifier="gtk_idle_add">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="1">
+          <type name="Function" c:type="GtkFunction"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="idle_add_full" c:identifier="gtk_idle_add_full">
+      <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="function" transfer-ownership="none" scope="call">
+          <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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="call">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="idle_add_priority" c:identifier="gtk_idle_add_priority">
+      <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="function"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="Function" c:type="GtkFunction"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="idle_remove" c:identifier="gtk_idle_remove">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="idle_handler_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="idle_remove_by_data"
+              c:identifier="gtk_idle_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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init"
+              c:identifier="gtk_init"
+              doc="main() function. Changed if any arguments were handled.
+Any parameters understood by gtk_init() are stripped before return.
+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.
+Note that there are some alternative ways to initialize GTK+:
+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&apos;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;">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   transfer-ownership="full"
+                   doc="Address of the &lt;parameter&gt;argc&lt;/parameter&gt; parameter of your">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <array length="0" c:type="char***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_add" c:identifier="gtk_init_add">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="1">
+          <type name="Function" c:type="GtkFunction"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_check"
+              c:identifier="gtk_init_check"
+              doc="main() function. Changed if any arguments were handled.
+Any parameters understood by gtk_init() are stripped before return.
+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.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   transfer-ownership="full"
+                   doc="Address of the &lt;parameter&gt;argc&lt;/parameter&gt; parameter of your">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   transfer-ownership="full"
+                   allow-none="1">
+          <array length="0" c:type="char***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="init_with_args"
+              c:identifier="gtk_init_with_args"
+              doc="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;
+describing the options of your program
+the &lt;option&gt;--help&lt;/option&gt; output for the options in @entries
+with gettext(), or %NULL
+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."
+              version="2.6"
+              throws="1">
+      <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>
+        <parameter name="parameter_string" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="entries" transfer-ownership="none">
+          <type name="GLib.OptionEntry" c:type="GOptionEntry*"/>
+        </parameter>
+        <parameter name="translation_domain" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="input_add_full" c:identifier="gtk_input_add_full">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="source" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="condition" transfer-ownership="none">
+          <type name="Gdk.InputCondition" c:type="GdkInputCondition"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none" scope="call">
+          <type name="Gdk.InputFunction" c:type="GdkInputFunction"/>
+        </parameter>
+        <parameter name="marshal"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="4"
+                   destroy="5">
+          <type name="CallbackMarshal" c:type="GtkCallbackMarshal"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="call">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="input_remove" c:identifier="gtk_input_remove">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="input_handler_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="key_snooper_install"
+              c:identifier="gtk_key_snooper_install">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="snooper"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="1">
+          <type name="KeySnoopFunc" c:type="GtkKeySnoopFunc"/>
+        </parameter>
+        <parameter name="func_data" transfer-ownership="none">
+          <type name="any" 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="uint" 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="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="main_iteration_do" c:identifier="gtk_main_iteration_do">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="blocking" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="main_level" c:identifier="gtk_main_level">
+      <return-value transfer-ownership="none">
+        <type name="uint" 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="output should not be clipped
+Draws an arrow in the given rectangle on @window using the given
+parameters. @arrow_type determines the direction of the 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"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <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="boolean" c:type="gboolean"/>
+        </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>
+    </function>
+    <function name="paint_box"
+              c:identifier="gtk_paint_box"
+              doc="output should not be clipped
+Draws a box on @window with the given parameters.">
+      <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"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </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>
+    </function>
+    <function name="paint_box_gap"
+              c:identifier="gtk_paint_box_gap"
+              doc="output should not be clipped
+Draws a box in @window using the given style and state and shadow type,
+leaving a gap in one side.">
+      <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"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </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>
+        <parameter name="gap_side" transfer-ownership="none">
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </parameter>
+        <parameter name="gap_x" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="gap_width" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_check"
+              c:identifier="gtk_paint_check"
+              doc="output should not be clipped
+Draws a check button indicator in the given rectangle on @window with
+the given parameters.">
+      <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"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </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>
+    </function>
+    <function name="paint_diamond"
+              c:identifier="gtk_paint_diamond"
+              doc="output should not be clipped
+Draws a diamond in the given rectangle on @window using the given
+parameters.">
+      <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"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </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>
+    </function>
+    <function name="paint_expander"
+              c:identifier="gtk_paint_expander"
+              doc="output should not be clipped
+whether the expander is collapsed, expanded, or in an
+intermediate state.
+Draws an expander as used in #GtkTreeView. @x and @y specify the
+center the expander. The size of the expander is determined by the
+&quot;expander-size&quot; style property of @widget.  (If widget is not
+specified or doesn&apos;t have an &quot;expander-size&quot; property, an
+unspecified default size will be used, since the caller doesn&apos;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.">
+      <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"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </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="expander_style" transfer-ownership="none">
+          <type name="ExpanderStyle" c:type="GtkExpanderStyle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_extension"
+              c:identifier="gtk_paint_extension"
+              doc="output should not be clipped
+Draws an extension, i.e. a notebook 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"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </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>
+        <parameter name="gap_side" transfer-ownership="none">
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_flat_box"
+              c:identifier="gtk_paint_flat_box"
+              doc="output should not be clipped
+Draws a flat box on @window with the given parameters.">
+      <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"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </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>
+    </function>
+    <function name="paint_focus"
+              c:identifier="gtk_paint_focus"
+              doc="output should not be clipped
+Draws a focus indicator around the given rectangle on @window using the
+given style.">
+      <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"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </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>
+    </function>
+    <function name="paint_handle"
+              c:identifier="gtk_paint_handle"
+              doc="output should not be clipped
+Draws a handle as used in #GtkHandleBox and #GtkPaned.">
+      <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"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </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>
+        <parameter name="orientation" transfer-ownership="none">
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_hline"
+              c:identifier="gtk_paint_hline"
+              doc="output should not be clipped
+Draws a horizontal line from (@x1, @y) to (@x2, @y) in @window
+using the given style and state.">
+      <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"
+                   allow-none="1"
+                   doc="rectangle to which the output is clipped, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="x1" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="x2" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="y" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_layout"
+              c:identifier="gtk_paint_layout"
+              doc="graphics context of @style
+output should not be clipped
+Draws a layout on @window using the given parameters.">
+      <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="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="area"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </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="layout" transfer-ownership="none">
+          <type name="Pango.Layout" c:type="PangoLayout*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_option"
+              c:identifier="gtk_paint_option"
+              doc="output should not be clipped
+Draws a radio button indicator in the given rectangle on @window with
+the given parameters.">
+      <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"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </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>
+    </function>
+    <function name="paint_polygon"
+              c:identifier="gtk_paint_polygon"
+              doc="output should not be clipped
+Draws a polygon on @window with the given parameters.">
+      <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"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="points" transfer-ownership="none">
+          <type name="Gdk.Point" c:type="GdkPoint*"/>
+        </parameter>
+        <parameter name="n_points" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="fill" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_resize_grip"
+              c:identifier="gtk_paint_resize_grip"
+              doc="output should not be clipped
+Draws a resize grip in the given rectangle on @window using the given
+parameters.">
+      <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"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <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="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>
+    </function>
+    <function name="paint_shadow"
+              c:identifier="gtk_paint_shadow"
+              doc="output should not be clipped
+Draws a shadow around the given rectangle in @window
+using the given style and state and shadow type.">
+      <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"
+                   allow-none="1"
+                   doc="clip rectangle or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </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>
+    </function>
+    <function name="paint_shadow_gap"
+              c:identifier="gtk_paint_shadow_gap"
+              doc="output should not be clipped
+Draws a shadow around the given rectangle in @window
+using the given style and state and shadow type, leaving a
+gap in one side.">
+      <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"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </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>
+        <parameter name="gap_side" transfer-ownership="none">
+          <type name="PositionType" c:type="GtkPositionType"/>
+        </parameter>
+        <parameter name="gap_x" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="gap_width" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_slider"
+              c:identifier="gtk_paint_slider"
+              doc="output should not be clipped
+Draws a slider in the given rectangle on @window using the
+given style and orientation.">
+      <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"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </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>
+        <parameter name="orientation" transfer-ownership="none">
+          <type name="Orientation" c:type="GtkOrientation"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_spinner"
+              c:identifier="gtk_paint_spinner"
+              doc="output should not be clipped
+Draws a spinner on @window using the given parameters."
+              version="2.20">
+      <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"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget" transfer-ownership="none" allow-none="1">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail" transfer-ownership="none" allow-none="1">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="step" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </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>
+    </function>
+    <function name="paint_string"
+              c:identifier="gtk_paint_string"
+              doc="output should not be clipped
+Draws a text string on @window with the given parameters."
+              deprecated="Use gtk_paint_layout() instead."
+              deprecated-version="2.0">
+      <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"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </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="string" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paint_tab"
+              c:identifier="gtk_paint_tab"
+              doc="output should not be clipped
+Draws an option menu tab (i.e. the up and down pointing arrows)
+in the given rectangle on @window using the given parameters.">
+      <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"
+                   allow-none="1"
+                   doc="clip rectangle, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </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>
+    </function>
+    <function name="paint_vline"
+              c:identifier="gtk_paint_vline"
+              doc="output should not be clipped
+Draws a vertical line from (@x, @y1_) to (@x, @y2_) in @window
+using the given style and state.">
+      <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"
+                   allow-none="1"
+                   doc="rectangle to which the output is clipped, or %NULL if the">
+          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="detail"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a style detail">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="y1_" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="y2_" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="x" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="paper_size_get_default"
+              c:identifier="gtk_paper_size_get_default"
+              doc="Returns the name of the default paper size, which
+depends on the current locale.
+is owned by GTK+ and should not be modified."
+              version="2.10">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="paper_size_get_paper_sizes"
+              c:identifier="gtk_paper_size_get_paper_sizes"
+              doc="as defined in the page setup dialog
+Creates a list of known paper sizes.
+allocated #GtkPaperSize objects"
+              version="2.12">
+      <return-value transfer-ownership="full"
+                    doc="a newly allocated list of newly">
+        <type name="GLib.List" c:type="GList*">
+          <type name="PaperSize"/>
+        </type>
+      </return-value>
+      <parameters>
+        <parameter name="include_custom" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_args"
+              c:identifier="gtk_parse_args"
+              doc="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&apos;t call this function explicitely if you are using
+gtk_init(), or gtk_init_check().">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="argc"
+                   direction="inout"
+                   transfer-ownership="full"
+                   doc="a pointer to the number of command line arguments.">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="argv"
+                   direction="inout"
+                   transfer-ownership="full"
+                   doc="a pointer to the array of command line arguments.">
+          <array c:type="char***">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="print_run_page_setup_dialog"
+              c:identifier="gtk_print_run_page_setup_dialog"
+              doc="Runs a page setup dialog, letting the user modify the values from
+is identical to the passed in @page_setup, otherwise it contains the
+modifications done in the dialog.
+Note that this function may use a recursive mainloop to show the page
+setup dialog. See gtk_print_run_page_setup_dialog_async() if this is
+a problem."
+              version="2.10">
+      <return-value transfer-ownership="full">
+        <type name="PageSetup" c:type="GtkPageSetup*"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="transient parent">
+          <type name="Window" c:type="GtkWindow*"/>
+        </parameter>
+        <parameter name="page_setup"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="an existing #GtkPageSetup">
+          <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"
+              doc="Runs a page setup dialog, letting the user modify the values from @page_setup.
+In contrast to gtk_print_run_page_setup_dialog(), this function  returns after
+showing the page setup dialog on platforms that support this, and calls @done_cb
+from a signal handler for the ::response signal of the dialog."
+              version="2.10">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="transient parent, or %NULL">
+          <type name="Window" c:type="GtkWindow*"/>
+        </parameter>
+        <parameter name="page_setup"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="an existing #GtkPageSetup, or %NULL">
+          <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"
+                   scope="call"
+                   closure="4">
+          <type name="PageSetupDoneFunc" c:type="GtkPageSetupDoneFunc"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="propagate_event"
+              c:identifier="gtk_propagate_event"
+              doc="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 &quot;event&quot; 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&apos;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.">
+      <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="event" transfer-ownership="none">
+          <type name="Gdk.Event" c:type="GdkEvent*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="quit_add" c:identifier="gtk_quit_add">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="main_level" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="Function" c:type="GtkFunction"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" 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="uint" 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">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="main_level" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none" scope="call">
+          <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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="call">
+          <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="uint" 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="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_add_class_style" c:identifier="gtk_rc_add_class_style">
+      <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>
+        <parameter name="pattern" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_add_default_file"
+              c:identifier="gtk_rc_add_default_file"
+              doc="is searched in the current directory.
+Adds a file to the list of files to be parsed at the
+end of gtk_init().">
+      <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_add_widget_class_style"
+              c:identifier="gtk_rc_add_widget_class_style">
+      <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>
+        <parameter name="pattern" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_add_widget_name_style"
+              c:identifier="gtk_rc_add_widget_name_style">
+      <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>
+        <parameter name="pattern" transfer-ownership="none">
+          <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="Searches for a theme engine in the GTK+ search path. This function
+is not useful for applications and should not be used.
+otherwise %NULL.">
+      <return-value transfer-ownership="full" doc=",">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+      <parameters>
+        <parameter name="module_file" transfer-ownership="none">
+          <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="warning message, or %NULL
+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.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </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>
+        <parameter name="pixmap_file" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_get_default_files"
+              c:identifier="gtk_rc_get_default_files"
+              doc="Retrieves the current list of RC files that will be parsed
+at the end of gtk_init().
+is owned by GTK+ and must not be freed by the application.
+If you want to store this information, you should make a copy.">
+      <return-value transfer-ownership="full">
+        <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="listing the IM modules available for loading
+Obtains the path to the IM modules file. See the documentation
+of the &lt;link linkend=&quot;im-module-file&quot;&gt;&lt;envar&gt;GTK_IM_MODULE_FILE&lt;/envar&gt;&lt;/link&gt;
+environment variable for more details.">
+      <return-value transfer-ownership="full">
+        <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="look for IM modules.
+Obtains the path in which to look for IM modules. See the documentation
+of the &lt;link linkend=&quot;im-module-path&quot;&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.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="rc_get_module_dir"
+              c:identifier="gtk_rc_get_module_dir"
+              doc="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=&quot;gtk-running&quot;/&gt;.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="rc_get_style"
+              c:identifier="gtk_rc_get_style"
+              doc="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.">
+      <return-value transfer-ownership="full">
+        <type name="Style" c:type="GtkStyle*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <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="if no matching against the widget path should be done
+if no matching against the class path should be done.
+when matching against class styles, or #G_TYPE_NONE
+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&apos;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));
+]|
+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.">
+      <return-value transfer-ownership="full">
+        <type name="Style" c:type="GtkStyle*"/>
+      </return-value>
+      <parameters>
+        <parameter name="settings" transfer-ownership="none">
+          <type name="Settings" c:type="GtkSettings*"/>
+        </parameter>
+        <parameter name="widget_path"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the widget path to use when looking up the style, or %NULL">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="class_path"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="the class path to use when looking up the style, or %NULL">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="type" transfer-ownership="none">
+          <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="Parses a color in the &lt;link linkend=&quot;color=format&quot;&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">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="scanner" transfer-ownership="none">
+          <type name="GLib.Scanner" c:type="GScanner*"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <type name="Gdk.Color" c:type="GdkColor*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_parse_color_full"
+              c:identifier="gtk_rc_parse_color_full"
+              doc="Parses a color in the &lt;link linkend=&quot;color=format&quot;&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"
+              version="2.12">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="scanner" transfer-ownership="none">
+          <type name="GLib.Scanner" c:type="GScanner*"/>
+        </parameter>
+        <parameter name="style"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a #GtkRcStyle, or %NULL">
+          <type name="RcStyle" c:type="GtkRcStyle*"/>
+        </parameter>
+        <parameter name="color" transfer-ownership="none">
+          <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="uint" 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="uint" 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="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;&quot;{ left, right, top, bottom }&quot;&lt;/literal&gt; for integers
+%left, %right, %top and %bottom.
+has been set to the resulting #GtkBorder.">
+      <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>
+        <parameter name="gstring" 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>
+    </function>
+    <function name="rc_property_parse_color"
+              c:identifier="gtk_rc_property_parse_color"
+              doc="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.">
+      <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>
+        <parameter name="gstring" 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>
+    </function>
+    <function name="rc_property_parse_enum"
+              c:identifier="gtk_rc_property_parse_enum"
+              doc="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.">
+      <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>
+        <parameter name="gstring" 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>
+    </function>
+    <function name="rc_property_parse_flags"
+              c:identifier="gtk_rc_property_parse_flags"
+              doc="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;&quot;( flag1 | flag2 | ... )&quot;&lt;/literal&gt;.
+has been set to the resulting flags value.">
+      <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>
+        <parameter name="gstring" 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>
+    </function>
+    <function name="rc_property_parse_requisition"
+              c:identifier="gtk_rc_property_parse_requisition"
+              doc="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;&quot;{ width, height }&quot;&lt;/literal&gt; for integers %width and %height.
+has been set to the resulting #GtkRequisition.">
+      <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>
+        <parameter name="gstring" 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>
+    </function>
+    <function name="rc_reparse_all"
+              c:identifier="gtk_rc_reparse_all"
+              doc="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.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="rc_reparse_all_for_settings"
+              c:identifier="gtk_rc_reparse_all_for_settings"
+              doc="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.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="settings" transfer-ownership="none">
+          <type name="Settings" c:type="GtkSettings*"/>
+        </parameter>
+        <parameter name="force_load" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_reset_styles"
+              c:identifier="gtk_rc_reset_styles"
+              doc="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&apos;t affect widgets that have a style set explicitely on them
+with gtk_widget_set_style()."
+              version="2.4">
+      <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="GtkSettings*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rc_scanner_new" c:identifier="gtk_rc_scanner_new">
+      <return-value transfer-ownership="full">
+        <type name="GLib.Scanner" c:type="GScanner*"/>
+      </return-value>
+    </function>
+    <function name="rc_set_default_files"
+              c:identifier="gtk_rc_set_default_files"
+              doc="Sets the list of files that GTK+ will read at the
+end of gtk_init().">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="filenames" transfer-ownership="none">
+          <array c:type="gchar**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="rgb_to_hsv"
+              c:identifier="gtk_rgb_to_hsv"
+              doc="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."
+              version="2.14">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="r" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+        <parameter name="g" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+        <parameter name="b" transfer-ownership="none">
+          <type name="double" c:type="gdouble"/>
+        </parameter>
+        <parameter name="h" direction="out" transfer-ownership="full">
+          <type name="double" c:type="gdouble*"/>
+        </parameter>
+        <parameter name="s" direction="out" transfer-ownership="full">
+          <type name="double" c:type="gdouble*"/>
+        </parameter>
+        <parameter name="v" direction="out" transfer-ownership="full">
+          <type name="double" c:type="gdouble*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_add_target"
+              c:identifier="gtk_selection_add_target"
+              doc="Appends a specified target to the list of supported targets for a
+given widget and selection.">
+      <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" transfer-ownership="none">
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="target" transfer-ownership="none">
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="info" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_add_targets"
+              c:identifier="gtk_selection_add_targets"
+              doc="Prepends a table of targets to the list of supported targets
+for a given widget and selection.">
+      <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" transfer-ownership="none">
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="targets" transfer-ownership="none">
+          <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+        </parameter>
+        <parameter name="ntargets" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_clear"
+              c:identifier="gtk_selection_clear"
+              doc="The default handler for the #GtkWidget::selection-clear-event
+signal.
+your selection-clear-event handler. Calling this function
+from any other context is illegal."
+              version="2.2"
+              deprecated="Instead of calling this function, chain up from"
+              deprecated-version="2.4">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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>
+    </function>
+    <function name="selection_clear_targets"
+              c:identifier="gtk_selection_clear_targets"
+              doc="Remove all targets registered for the given selection for the
+widget.">
+      <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" transfer-ownership="none">
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_convert"
+              c:identifier="gtk_selection_convert"
+              doc="emergency, you could use #GDK_CURRENT_TIME
+Requests the contents of a selection. When received,
+a &quot;selection-received&quot; signal will be generated.
+request. (e.g., there was already a request in process for
+this widget).">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="selection" transfer-ownership="none">
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="target" transfer-ownership="none">
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_owner_set"
+              c:identifier="gtk_selection_owner_set"
+              doc="Claims ownership of a given selection for a particular widget,
+or, if @widget is %NULL, release ownership of the selection.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="a #GtkWidget, or %NULL.">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="selection" transfer-ownership="none">
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_owner_set_for_display"
+              c:identifier="gtk_selection_owner_set_for_display"
+              doc="Claim ownership of a given selection for a particular widget, or,
+if @widget is %NULL, release ownership of the selection."
+              version="2.2">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="display" transfer-ownership="none">
+          <type name="Gdk.Display" c:type="GdkDisplay*"/>
+        </parameter>
+        <parameter name="widget"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="or %NULL.">
+          <type name="Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="selection" transfer-ownership="none">
+          <type name="Gdk.Atom" c:type="GdkAtom"/>
+        </parameter>
+        <parameter name="time_" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="selection_remove_all"
+              c:identifier="gtk_selection_remove_all"
+              doc="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.">
+      <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="set_locale"
+              c:identifier="gtk_set_locale"
+              doc="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, &quot;&quot;)&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.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="gchar*"/>
+      </return-value>
+    </function>
+    <function name="show_about_dialog"
+              c:identifier="gtk_show_about_dialog"
+              doc="This is a convenience function for showing an application&apos;s about box.
+The constructed dialog is associated with the parent window and
+reused for future invocations of this function."
+              version="2.6">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="transient parent, or %NULL for none">
+          <type name="Window" c:type="GtkWindow*"/>
+        </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="show_uri"
+              c:identifier="gtk_show_uri"
+              doc="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()."
+              version="2.14"
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="screen"
+                   transfer-ownership="none"
+                   allow-none="1"
+                   doc="screen to show the uri on or %NULL for the default screen">
+          <type name="Gdk.Screen" c:type="GdkScreen*"/>
+        </parameter>
+        <parameter name="uri" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="timestamp" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_compat_matched"
+              c:identifier="gtk_signal_compat_matched">
+      <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>
+        <parameter name="func"
+                   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>
+        <parameter name="match" transfer-ownership="none">
+          <type name="GObject.SignalMatchType" c:type="GSignalMatchType"/>
+        </parameter>
+        <parameter name="action" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_connect_full"
+              c:identifier="gtk_signal_connect_full">
+      <return-value transfer-ownership="none">
+        <type name="ulong" c:type="gulong"/>
+      </return-value>
+      <parameters>
+        <parameter name="object" transfer-ownership="none">
+          <type name="Object" c:type="GtkObject*"/>
+        </parameter>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="GObject.Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="unsupported"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="4"
+                   destroy="5">
+          <type name="CallbackMarshal" c:type="GtkCallbackMarshal"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy_func" transfer-ownership="none" scope="call">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+        <parameter name="object_signal" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="after" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_connect_object_while_alive"
+              c:identifier="gtk_signal_connect_object_while_alive">
+      <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>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="func" transfer-ownership="none" scope="call">
+          <type name="GObject.Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="alive_object" transfer-ownership="none">
+          <type name="Object" c:type="GtkObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_connect_while_alive"
+              c:identifier="gtk_signal_connect_while_alive">
+      <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>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="3">
+          <type name="GObject.Callback" c:type="GCallback"/>
+        </parameter>
+        <parameter name="func_data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="alive_object" transfer-ownership="none">
+          <type name="Object" c:type="GtkObject*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_emit" c:identifier="gtk_signal_emit">
+      <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>
+        <parameter name="signal_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_emit_by_name"
+              c:identifier="gtk_signal_emit_by_name">
+      <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>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_emit_stop_by_name"
+              c:identifier="gtk_signal_emit_stop_by_name">
+      <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>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_emitv" c:identifier="gtk_signal_emitv">
+      <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>
+        <parameter name="signal_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="args" transfer-ownership="none">
+          <type name="Arg" c:type="GtkArg*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_emitv_by_name"
+              c:identifier="gtk_signal_emitv_by_name">
+      <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>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="args" transfer-ownership="none">
+          <type name="Arg" c:type="GtkArg*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_new" c:identifier="gtk_signal_new">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="signal_flags" transfer-ownership="none">
+          <type name="SignalRunType" c:type="GtkSignalRunType"/>
+        </parameter>
+        <parameter name="object_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="function_offset" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="marshaller" transfer-ownership="none">
+          <type name="GObject.SignalCMarshaller" c:type="GSignalCMarshaller"/>
+        </parameter>
+        <parameter name="return_val" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_args" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter transfer-ownership="none">
+          <varargs>
+          </varargs>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="signal_newv" c:identifier="gtk_signal_newv">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="signal_flags" transfer-ownership="none">
+          <type name="SignalRunType" c:type="GtkSignalRunType"/>
+        </parameter>
+        <parameter name="object_type" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="function_offset" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="marshaller" transfer-ownership="none">
+          <type name="GObject.SignalCMarshaller" c:type="GSignalCMarshaller"/>
+        </parameter>
+        <parameter name="return_val" transfer-ownership="none">
+          <type name="GType" c:type="GType"/>
+        </parameter>
+        <parameter name="n_args" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="args" direction="out" transfer-ownership="full">
+          <type name="GType" c:type="GType*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="stock_add"
+              c:identifier="gtk_stock_add"
+              doc="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.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="items" transfer-ownership="none">
+          <type name="StockItem" c:type="GtkStockItem*"/>
+        </parameter>
+        <parameter name="n_items" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="stock_add_static"
+              c:identifier="gtk_stock_add_static"
+              doc="Same as gtk_stock_add(), but doesn&apos;t copy @items, so">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="items" transfer-ownership="none">
+          <type name="StockItem" c:type="GtkStockItem*"/>
+        </parameter>
+        <parameter name="n_items" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="stock_list_ids"
+              c:identifier="gtk_stock_list_ids"
+              doc="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().">
+      <return-value transfer-ownership="full" doc="a list of known stock IDs">
+        <type name="GLib.SList" c:type="GSList*">
+          <type name="utf8"/>
+        </type>
+      </return-value>
+    </function>
+    <function name="stock_lookup"
+              c:identifier="gtk_stock_lookup"
+              doc="Fills @item with the registered values for @stock_id, returning %TRUE
+if @stock_id was known.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="stock_id" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="item" transfer-ownership="none">
+          <type name="StockItem" c:type="GtkStockItem*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="stock_set_translate_func"
+              c:identifier="gtk_stock_set_translate_func"
+              doc="no longer needed
+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_(&quot;odd items&quot;, &quot;Item 1&quot;), 0, 0, &quot;odd-item-domain&quot; },
+{ MY_ITEM2, NC_(&quot;even items&quot;, &quot;Item 2&quot;), 0, 0, &quot;even-item-domain&quot; },
+};
+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 (&quot;odd-item-domain&quot;, my_translate_func, &quot;odd items&quot;);
+gtk_stock_set_translate_func (&quot;even-item-domain&quot;, my_translate_func, &quot;even items&quot;);
+]|"
+              version="2.8">
+      <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>
+        <parameter name="func"
+                   transfer-ownership="none"
+                   scope="notified"
+                   closure="2"
+                   destroy="3">
+          <type name="TranslateFunc" c:type="GtkTranslateFunc"/>
+        </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>
+    </function>
+    <function name="target_table_free"
+              c:identifier="gtk_target_table_free"
+              doc="This function frees a target table as returned by
+gtk_target_table_new_from_list()"
+              version="2.10">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="targets" transfer-ownership="none">
+          <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+        </parameter>
+        <parameter name="n_targets" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="target_table_new_from_list"
+              c:identifier="gtk_target_table_new_from_list"
+              doc="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."
+              version="2.10">
+      <return-value transfer-ownership="full">
+        <type name="TargetEntry" c:type="GtkTargetEntry*"/>
+      </return-value>
+      <parameters>
+        <parameter name="list" transfer-ownership="none">
+          <type name="TargetList" c:type="GtkTargetList*"/>
+        </parameter>
+        <parameter name="n_targets" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="targets_include_image"
+              c:identifier="gtk_targets_include_image"
+              doc="how to convert a pixbuf into the format
+Determines if any of the targets in @targets can be used to
+provide a #GdkPixbuf.
+otherwise %FALSE."
+              version="2.10">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="int" c:type="gint"/>
+        </parameter>
+        <parameter name="writable" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="targets_include_rich_text"
+              c:identifier="gtk_targets_include_rich_text"
+              doc="Determines if any of the targets in @targets can be used to
+provide rich text.
+otherwise %FALSE."
+              version="2.10">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="int" c:type="gint"/>
+        </parameter>
+        <parameter name="buffer" transfer-ownership="none">
+          <type name="TextBuffer" c:type="GtkTextBuffer*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="targets_include_text"
+              c:identifier="gtk_targets_include_text"
+              doc="Determines if any of the targets in @targets can be used to
+provide text.
+otherwise %FALSE."
+              version="2.10">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="targets_include_uri"
+              c:identifier="gtk_targets_include_uri"
+              doc="Determines if any of the targets in @targets can be used to
+provide an uri list.
+otherwise %FALSE."
+              version="2.10">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="test_create_simple_window"
+              c:identifier="gtk_test_create_simple_window">
+      <return-value transfer-ownership="full">
+        <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">
+      <return-value transfer-ownership="full">
+        <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">
+      <return-value transfer-ownership="full">
+        <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">
+      <return-value transfer-ownership="full">
+        <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">
+      <return-value transfer-ownership="full">
+        <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">
+      <return-value transfer-ownership="full">
+        <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"
+              doc="main() function. Changed if any arguments were handled.
+Any parameters understood by g_test_init() or gtk_init() are
+stripped before return.
+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&apos;ll
+also set the program&apos;s locale to &quot;C&quot; 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."
+              version="2.14">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="argcp" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="argvp" transfer-ownership="none">
+          <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" direction="out" transfer-ownership="full">
+          <type name="uint" 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="double" 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="double" 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="boolean" 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="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="upwards" transfer-ownership="none">
+          <type name="boolean" 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="boolean" 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="uint" 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="boolean" 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="uint" c:type="guint"/>
+        </parameter>
+        <parameter name="modifiers" transfer-ownership="none">
+          <type name="Gdk.ModifierType" c:type="GdkModifierType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="text_anchored_child_set_layout"
+              c:identifier="gtk_text_anchored_child_set_layout">
+      <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="layout" transfer-ownership="none">
+          <type name="TextLayout" c:type="GtkTextLayout*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timeout_add" c:identifier="gtk_timeout_add">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="function"
+                   transfer-ownership="none"
+                   scope="call"
+                   closure="2">
+          <type name="Function" c:type="GtkFunction"/>
+        </parameter>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gpointer"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timeout_add_full" c:identifier="gtk_timeout_add_full">
+      <return-value transfer-ownership="none">
+        <type name="uint" c:type="guint"/>
+      </return-value>
+      <parameters>
+        <parameter name="interval" transfer-ownership="none">
+          <type name="uint32" c:type="guint32"/>
+        </parameter>
+        <parameter name="function" transfer-ownership="none" scope="call">
+          <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="any" c:type="gpointer"/>
+        </parameter>
+        <parameter name="destroy" transfer-ownership="none" scope="call">
+          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="timeout_remove" c:identifier="gtk_timeout_remove">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="timeout_handler_id" transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_get_row_drag_data"
+              c:identifier="gtk_tree_get_row_drag_data"
+              doc="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&apos;s calling this function, because a pointer to the tree model
+is being passed around. If you aren&apos;t in the same process, then you&apos;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">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="selection_data" transfer-ownership="none">
+          <type name="SelectionData" c:type="GtkSelectionData*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="tree_row_reference_deleted"
+              c:identifier="gtk_tree_row_reference_deleted"
+              doc="Lets a set of row reference created by gtk_tree_row_reference_new_proxy()
+know that the model emitted the &quot;row_deleted&quot; signal.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="proxy" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="path" transfer-ownership="none">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_row_reference_inserted"
+              c:identifier="gtk_tree_row_reference_inserted"
+              doc="Lets a set of row reference created by gtk_tree_row_reference_new_proxy()
+know that the model emitted the &quot;row_inserted&quot; signal.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="proxy" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </parameter>
+        <parameter name="path" transfer-ownership="none">
+          <type name="TreePath" c:type="GtkTreePath*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_row_reference_reordered"
+              c:identifier="gtk_tree_row_reference_reordered"
+              doc="Lets a set of row reference created by gtk_tree_row_reference_new_proxy()
+know that the model emitted the &quot;rows_reordered&quot; signal.">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="proxy" transfer-ownership="none">
+          <type name="GObject.Object" c:type="GObject*"/>
+        </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" direction="out" transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="tree_set_row_drag_data"
+              c:identifier="gtk_tree_set_row_drag_data"
+              doc="Sets selection data of target type %GTK_TREE_MODEL_ROW. Normally used
+in a drag_data_get handler.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="selection_data" transfer-ownership="none">
+          <type name="SelectionData" c:type="GtkSelectionData*"/>
+        </parameter>
+        <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>
+    </function>
+    <function name="true" c:identifier="gtk_true">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+    </function>
+    <function name="type_class" c:identifier="gtk_type_class">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="Type" c:type="GtkType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_enum_find_value"
+              c:identifier="gtk_type_enum_find_value">
+      <return-value transfer-ownership="full">
+        <type name="EnumValue" c:type="GtkEnumValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="enum_type" transfer-ownership="none">
+          <type name="Type" c:type="GtkType"/>
+        </parameter>
+        <parameter name="value_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_enum_get_values"
+              c:identifier="gtk_type_enum_get_values">
+      <return-value transfer-ownership="full">
+        <type name="EnumValue" c:type="GtkEnumValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="enum_type" transfer-ownership="none">
+          <type name="Type" c:type="GtkType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_flags_find_value"
+              c:identifier="gtk_type_flags_find_value">
+      <return-value transfer-ownership="full">
+        <type name="FlagValue" c:type="GtkFlagValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags_type" transfer-ownership="none">
+          <type name="Type" c:type="GtkType"/>
+        </parameter>
+        <parameter name="value_name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_flags_get_values"
+              c:identifier="gtk_type_flags_get_values">
+      <return-value transfer-ownership="full">
+        <type name="FlagValue" c:type="GtkFlagValue*"/>
+      </return-value>
+      <parameters>
+        <parameter name="flags_type" transfer-ownership="none">
+          <type name="Type" c:type="GtkType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_init" c:identifier="gtk_type_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="debug_flags" transfer-ownership="none">
+          <type name="GObject.TypeDebugFlags" c:type="GTypeDebugFlags"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_new" c:identifier="gtk_type_new">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="Type" c:type="GtkType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="type_unique" c:identifier="gtk_type_unique">
+      <return-value transfer-ownership="full">
+        <type name="Type" c:type="GtkType"/>
+      </return-value>
+      <parameters>
+        <parameter name="parent_type" transfer-ownership="none">
+          <type name="Type" c:type="GtkType"/>
+        </parameter>
+        <parameter name="gtkinfo" transfer-ownership="none">
+          <type name="TypeInfo" c:type="GtkTypeInfo*"/>
+        </parameter>
+      </parameters>
+    </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/gl/GtkGL-1.0.gir b/basis/gtk/gl/GtkGL-1.0.gir
new file mode 100644 (file)
index 0000000..a2d54ff
--- /dev/null
@@ -0,0 +1,173 @@
+<?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="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="2.0"/>
+  <include name="GdkPixbuf" version="2.0"/>
+  <include name="Gio" version="2.0"/>
+  <include name="Gtk" version="2.0"/>
+  <include name="Pango" version="1.0"/>
+  <include name="cairo" version="1.0"/>
+  <package name="gtk+-2.0"/>
+  <namespace name="Gtk"
+             version="1.0"
+             shared-library="libgtkglext-x11-1.0.so.0"
+             c:prefix="Gtk">
+    <bitfield name="GLDebugFlag" 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>
+    <constant name="GTKGLEXT_BINARY_AGE" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="GTKGLEXT_INTERFACE_AGE" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="GTKGLEXT_MAJOR_VERSION" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="GTKGLEXT_MICRO_VERSION" value="0">
+      <type name="int"/>
+    </constant>
+    <constant name="GTKGLEXT_MINOR_VERSION" value="2">
+      <type name="int"/>
+    </constant>
+    <constant name="func__" value="&lt;unknown&gt;">
+      <type name="utf8"/>
+    </constant>
+    <function name="gl_init" c:identifier="gtk_gl_init">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </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>
+    <function name="gl_init_check" c:identifier="gtk_gl_init_check">
+      <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>
+    <function name="gl_parse_args" c:identifier="gtk_gl_parse_args">
+      <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>
+    <function name="widget_create_gl_context"
+              c:identifier="gtk_widget_create_gl_context">
+      <return-value transfer-ownership="full">
+        <type name="GdkGLContext" c:type="GdkGLContext*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="share_list" transfer-ownership="none">
+          <type name="GdkGLContext" c:type="GdkGLContext*"/>
+        </parameter>
+        <parameter name="direct" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="render_type" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="widget_get_gl_config"
+              c:identifier="gtk_widget_get_gl_config">
+      <return-value transfer-ownership="full">
+        <type name="GdkGLConfig" c:type="GdkGLConfig*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="widget_get_gl_context"
+              c:identifier="gtk_widget_get_gl_context">
+      <return-value transfer-ownership="full">
+        <type name="GdkGLContext" c:type="GdkGLContext*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="widget_get_gl_window"
+              c:identifier="gtk_widget_get_gl_window">
+      <return-value transfer-ownership="full">
+        <type name="GdkGLWindow" c:type="GdkGLWindow*"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="widget_is_gl_capable"
+              c:identifier="gtk_widget_is_gl_capable">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="widget_set_gl_capability"
+              c:identifier="gtk_widget_set_gl_capability">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="widget" transfer-ownership="none">
+          <type name="Gtk.Widget" c:type="GtkWidget*"/>
+        </parameter>
+        <parameter name="glconfig" transfer-ownership="none">
+          <type name="GdkGLConfig" c:type="GdkGLConfig*"/>
+        </parameter>
+        <parameter name="share_list" transfer-ownership="none">
+          <type name="GdkGLContext" c:type="GdkGLContext*"/>
+        </parameter>
+        <parameter name="direct" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="render_type" transfer-ownership="none">
+          <type name="int" 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/gl.factor b/basis/gtk/gl/gl.factor
new file mode 100644 (file)
index 0000000..53569b6
--- /dev/null
@@ -0,0 +1,15 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien.syntax alien.libraries combinators kernel system
+gir glib gobject gio gmodule gdk.pixbuf gdk gdk.gl gtk gtk.ffi ;
+
+<<
+"gtk.gl" {
+    { [ os winnt? ] [ "" "cdecl" add-library ] }
+    { [ os macosx? ] [ drop ] }
+    { [ os unix? ] [ "libgtkglext-x11-1.0.so" "cdecl" add-library ] }
+} cond
+>>
+
+IN-GIR: gtk.gl vocab:gtk/gl/GtkGL-1.0.gir
+
diff --git a/basis/gtk/gtk.factor b/basis/gtk/gtk.factor
new file mode 100644 (file)
index 0000000..1882eb8
--- /dev/null
@@ -0,0 +1,23 @@
+! Copyright (C) 2009 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien.syntax alien.libraries cairo.ffi combinators 
+kernel system
+gir glib glib.ffi gobject gio gmodule gdk.pixbuf gdk atk ;
+
+<<
+"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
+>>
+
+IN: gtk.ffi
+
+TYPEDEF: void GtkAllocation
+TYPEDEF: void GtkEnumValue
+TYPEDEF: void GtkFlagValue
+TYPEDEF: GType GtkType
+
+IN-GIR: gtk vocab:gtk/Gtk-2.0.gir
+
diff --git a/basis/pango/Pango-1.0.gir b/basis/pango/Pango-1.0.gir
new file mode 100644 (file)
index 0000000..06ce0e3
--- /dev/null
@@ -0,0 +1,7445 @@
+<?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="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:prefix="Pango">
+    <alias name="Glyph" target="uint32" c:type="PangoGlyph"/>
+    <alias name="GlyphUnit" target="int32" c:type="PangoGlyphUnit"/>
+    <alias name="LayoutRun" target="GlyphItem" c:type="PangoLayoutRun"/>
+    <constant name="ANALYSIS_FLAG_CENTERED_BASELINE" value="1">
+      <type name="int"/>
+    </constant>
+    <constant name="ATTR_INDEX_FROM_TEXT_BEGINNING" value="0">
+      <type name="int"/>
+    </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="uint8" c:type="guint8"/>
+      </field>
+      <field name="gravity" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="flags" writable="1">
+        <type name="uint8" c:type="guint8"/>
+      </field>
+      <field name="script" writable="1">
+        <type name="uint8" 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*"/>
+      </field>
+    </record>
+    <record name="AttrClass" c:type="PangoAttrClass">
+      <field name="type" writable="1">
+        <type name="AttrType" c:type="PangoAttrType"/>
+      </field>
+      <field name="copy">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="destroy">
+        <type name="any" c:type="pointer"/>
+      </field>
+      <field name="equal">
+        <type name="any" c:type="pointer"/>
+      </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">
+      <return-value transfer-ownership="none">
+        <type name="any" c:type="gpointer"/>
+      </return-value>
+      <parameters>
+        <parameter name="data" transfer-ownership="none">
+          <type name="any" c:type="gconstpointer"/>
+        </parameter>
+      </parameters>
+    </callback>
+    <callback name="AttrFilterFunc" c:type="PangoAttrFilterFunc">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="any" 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="double" 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>
+      <constructor name="new"
+                   c:identifier="pango_attr_font_desc_new"
+                   doc="Create a new font description attribute. This attribute
+allows setting family, style, weight, variant, stretch,
+and size simultaneously.
+freed with pango_attribute_destroy().">
+        <return-value transfer-ownership="full">
+          <type name="AttrFontDesc" c:type="PangoAttribute*"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc" transfer-ownership="none">
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+    </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="int" c:type="int"/>
+      </field>
+    </record>
+    <record name="AttrIterator" c:type="PangoAttrIterator">
+      <method name="range"
+              c:identifier="pango_attr_iterator_range"
+              doc="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&apos;t fit into
+a signed integer are clamped to %G_MAXINT.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+          <parameter name="end" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next"
+              c:identifier="pango_attr_iterator_next"
+              doc="Advance the iterator until the next change of style.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="pango_attr_iterator_copy"
+              doc="Copy a #PangoAttrIterator
+be freed with pango_attr_iterator_destroy().">
+        <return-value transfer-ownership="full">
+          <type name="AttrIterator" c:type="PangoAttrIterator*"/>
+        </return-value>
+      </method>
+      <method name="destroy"
+              c:identifier="pango_attr_iterator_destroy"
+              doc="Destroy a #PangoAttrIterator and free all associated memory.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get"
+              c:identifier="pango_attr_iterator_get"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Attribute" c:type="PangoAttribute*"/>
+        </return-value>
+        <parameters>
+          <parameter name="type" transfer-ownership="none">
+            <type name="AttrType" c:type="PangoAttrType"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font"
+              c:identifier="pango_attr_iterator_get_font"
+              doc="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;.
+if none is found.
+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.
+Get the font and other attributes at the current iterator position.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc" transfer-ownership="none">
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+          <parameter name="language" transfer-ownership="none">
+            <type name="Language" c:type="PangoLanguage**"/>
+          </parameter>
+          <parameter name="extra_attrs"
+                     transfer-ownership="full"
+                     doc="if non-%NULL,">
+            <type name="GLib.SList" c:type="GSList**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attrs"
+              c:identifier="pango_attr_iterator_get_attrs"
+              doc="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."
+              version="1.2">
+        <return-value transfer-ownership="full" doc="a list of">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Pango.Attribute"/>
+          </type>
+        </return-value>
+      </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>
+      <constructor name="new"
+                   c:identifier="pango_attr_language_new"
+                   doc="Create a new language tag attribute.
+freed with pango_attribute_destroy().">
+        <return-value transfer-ownership="full">
+          <type name="AttrLanguage" c:type="PangoAttribute*"/>
+        </return-value>
+        <parameters>
+          <parameter name="language" transfer-ownership="none">
+            <type name="Language" c:type="PangoLanguage*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+    </record>
+    <record name="AttrList"
+            c:type="PangoAttrList"
+            glib:type-name="PangoAttrList"
+            glib:get-type="pango_attr_list_get_type">
+      <constructor name="new"
+                   c:identifier="pango_attr_list_new"
+                   doc="Create a new empty attribute list with a reference count of one.
+be freed with pango_attr_list_unref().">
+        <return-value transfer-ownership="full">
+          <type name="AttrList" c:type="PangoAttrList*"/>
+        </return-value>
+      </constructor>
+      <method name="ref"
+              c:identifier="pango_attr_list_ref"
+              doc="Increase the reference count of the given attribute list by one."
+              version="1.10">
+        <return-value transfer-ownership="full">
+          <type name="AttrList" c:type="PangoAttrList*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="pango_attr_list_unref"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="pango_attr_list_copy"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="AttrList" c:type="PangoAttrList*"/>
+        </return-value>
+      </method>
+      <method name="insert"
+              c:identifier="pango_attr_list_insert"
+              doc="assumed by the list.
+Insert the given attribute into the #PangoAttrList. It will
+be inserted after all other attributes with a matching">
+        <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>
+      </method>
+      <method name="insert_before"
+              c:identifier="pango_attr_list_insert_before"
+              doc="assumed by the list.
+Insert the given attribute into the #PangoAttrList. It will
+be inserted before all other attributes with a matching">
+        <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>
+      </method>
+      <method name="change"
+              c:identifier="pango_attr_list_change"
+              doc="assumed by the list.
+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.">
+        <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>
+      </method>
+      <method name="splice"
+              c:identifier="pango_attr_list_splice"
+              doc="must be specified since the attributes in @other
+may only be present at some subsection of this range)
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="other" transfer-ownership="none">
+            <type name="AttrList" c:type="PangoAttrList*"/>
+          </parameter>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="filter"
+              c:identifier="pango_attr_list_filter"
+              doc="should be filtered out.
+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."
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="AttrList" c:type="PangoAttrList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="func"
+                     transfer-ownership="none"
+                     scope="call"
+                     closure="2">
+            <type name="AttrFilterFunc" c:type="PangoAttrFilterFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_iterator"
+              c:identifier="pango_attr_list_get_iterator"
+              doc="Create a iterator initialized to the beginning of the list.
+be freed with pango_attr_iterator_destroy().">
+        <return-value transfer-ownership="full">
+          <type name="AttrIterator" c:type="PangoAttrIterator*"/>
+        </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="any" c:type="gpointer"/>
+      </field>
+      <field name="copy_func" writable="1">
+        <type name="AttrDataCopyFunc" c:type="PangoAttrDataCopyFunc"/>
+      </field>
+      <field name="destroy_func" writable="1">
+        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="pango_attr_shape_new"
+                   doc="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().">
+        <return-value transfer-ownership="full">
+          <type name="AttrShape" c:type="PangoAttribute*"/>
+        </return-value>
+        <parameters>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_data"
+                   c:identifier="pango_attr_shape_new_with_data"
+                   doc="is copied. If %NULL, @data is simply copied
+as a pointer.
+is freed, or %NULL
+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()."
+                   version="1.8">
+        <return-value transfer-ownership="full">
+          <type name="AttrShape" c:type="PangoAttribute*"/>
+        </return-value>
+        <parameters>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+          <parameter name="copy_func"
+                     transfer-ownership="none"
+                     scope="call"
+                     destroy="4">
+            <type name="AttrDataCopyFunc" c:type="PangoAttrDataCopyFunc"/>
+          </parameter>
+          <parameter name="destroy_func"
+                     transfer-ownership="none"
+                     scope="call">
+            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+          </parameter>
+        </parameters>
+      </constructor>
+    </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="int" c:type="int"/>
+      </field>
+      <field name="absolute" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="pango_attr_size_new"
+                   doc="Create a new font-size attribute in fractional points.
+freed with pango_attribute_destroy().">
+        <return-value transfer-ownership="full">
+          <type name="AttrSize" c:type="PangoAttribute*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_absolute"
+                   c:identifier="pango_attr_size_new_absolute"
+                   doc="Create a new font-size attribute in device units.
+freed with pango_attribute_destroy()."
+                   version="1.8">
+        <return-value transfer-ownership="full">
+          <type name="AttrSize" c:type="PangoAttribute*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </constructor>
+    </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="uint" c:type="guint"/>
+      </field>
+      <field name="end_index" writable="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <method name="init"
+              c:identifier="pango_attribute_init"
+              doc="Initializes @attr&apos;s klass to @klass,
+it&apos;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."
+              version="1.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="klass" transfer-ownership="none">
+            <type name="AttrClass" c:type="PangoAttrClass*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy"
+              c:identifier="pango_attribute_copy"
+              doc="Make a copy of an attribute.
+freed with pango_attribute_destroy().">
+        <return-value transfer-ownership="full">
+          <type name="Attribute" c:type="PangoAttribute*"/>
+        </return-value>
+      </method>
+      <method name="destroy"
+              c:identifier="pango_attribute_destroy"
+              doc="Destroy a #PangoAttribute and free all associated memory.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="equal"
+              c:identifier="pango_attribute_equal"
+              doc="Compare two attributes for equality. This compares only the
+actual value of the two attributes and not the ranges that the
+attributes apply to.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="attr2" transfer-ownership="none">
+            <type name="Attribute" c:type="PangoAttribute*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <enumeration name="BidiType"
+                 doc="The #PangoBidiType type represents the bidirectional character
+type of a Unicode character as specified by the
+&lt;ulink url=&quot;http://www.unicode.org/reports/tr9/&quot;&gt;Unicode bidirectional algorithm&lt;/ulink&gt;."
+                 version="1.22"
+                 glib:type-name="PangoBidiType"
+                 glib:get-type="pango_bidi_type_get_type"
+                 c:type="PangoBidiType">
+      <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">
+      <field name="red" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="green" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <field name="blue" writable="1">
+        <type name="uint16" c:type="guint16"/>
+      </field>
+      <method name="copy"
+              c:identifier="pango_color_copy"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Color" c:type="PangoColor*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="pango_color_free"
+              doc="Frees a color allocated by pango_color_copy().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="parse"
+              c:identifier="pango_color_parse"
+              doc="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 &apos;&amp;num;rgb&apos; &apos;&amp;num;rrggbb&apos; &apos;&amp;num;rrrgggbbb&apos; or &apos;&amp;num;rrrrggggbbbb&apos; where
+&apos;r&apos;, &apos;g&apos; and &apos;b&apos; are hex digits of the red, green, and blue
+components of the color, respectively. (White in the four
+forms is &apos;&amp;num;fff&apos; &apos;&amp;num;ffffff&apos; &apos;&amp;num;fffffffff&apos; and &apos;&amp;num;ffffffffffff&apos;)
+otherwise false.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="spec" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string"
+              c:identifier="pango_color_to_string"
+              doc="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."
+              version="1.16">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="gchar*"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="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="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&apos;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().">
+        <return-value transfer-ownership="full">
+          <type name="Context" c:type="PangoContext*"/>
+        </return-value>
+      </constructor>
+      <method name="set_font_map"
+              c:identifier="pango_context_set_font_map"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font_map" transfer-ownership="none">
+            <type name="FontMap" c:type="PangoFontMap*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font_map"
+              c:identifier="pango_context_get_font_map"
+              doc="Gets the #PangoFontmap used to look up fonts for this context.
+is owned by Pango and should not be unreferenced."
+              version="1.6">
+        <return-value transfer-ownership="full">
+          <type name="FontMap" c:type="PangoFontMap*"/>
+        </return-value>
+      </method>
+      <method name="list_families"
+              c:identifier="pango_context_list_families"
+              doc="This array should be freed with g_free().
+List all families for a context.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="families" transfer-ownership="none">
+            <type name="FontFamily" c:type="PangoFontFamily***"/>
+          </parameter>
+          <parameter name="n_families"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_font"
+              c:identifier="pango_context_load_font"
+              doc="Loads the font in one of the fontmaps in the context
+that is the closest match for @desc.">
+        <return-value transfer-ownership="full">
+          <type name="Font" c:type="PangoFont*"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc" transfer-ownership="none">
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_fontset"
+              c:identifier="pango_context_load_fontset"
+              doc="Load a set of fonts in the context that can be used to render
+a font matching @desc.">
+        <return-value transfer-ownership="full">
+          <type name="Fontset" c:type="PangoFontset*"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc" transfer-ownership="none">
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+          <parameter name="language" transfer-ownership="none">
+            <type name="Language" c:type="PangoLanguage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_metrics"
+              c:identifier="pango_context_get_metrics"
+              doc="description from the context will be used.
+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.
+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.">
+        <return-value transfer-ownership="full">
+          <type name="FontMetrics" c:type="PangoFontMetrics*"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc" transfer-ownership="none">
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+          <parameter name="language" transfer-ownership="none">
+            <type name="Language" c:type="PangoLanguage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_font_description"
+              c:identifier="pango_context_set_font_description"
+              doc="Set the default font description for the context">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc" transfer-ownership="none">
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font_description"
+              c:identifier="pango_context_get_font_description"
+              doc="Retrieve the default font description for the context.
+This value must not be modified or freed.">
+        <return-value transfer-ownership="full">
+          <type name="FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </method>
+      <method name="get_language"
+              c:identifier="pango_context_get_language"
+              doc="Retrieves the global language tag for the context.">
+        <return-value transfer-ownership="full">
+          <type name="Language" c:type="PangoLanguage*"/>
+        </return-value>
+      </method>
+      <method name="set_language"
+              c:identifier="pango_context_set_language"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="language" transfer-ownership="none">
+            <type name="Language" c:type="PangoLanguage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_base_dir"
+              c:identifier="pango_context_set_base_dir"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="Direction" c:type="PangoDirection"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_base_dir"
+              c:identifier="pango_context_get_base_dir"
+              doc="Retrieves the base direction for the context. See
+pango_context_set_base_dir().">
+        <return-value transfer-ownership="full">
+          <type name="Direction" c:type="PangoDirection"/>
+        </return-value>
+      </method>
+      <method name="set_base_gravity"
+              c:identifier="pango_context_set_base_gravity"
+              doc="Sets the base gravity for the context.
+The base gravity is used in laying vertical text out."
+              version="1.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gravity" transfer-ownership="none">
+            <type name="Gravity" c:type="PangoGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_base_gravity"
+              c:identifier="pango_context_get_base_gravity"
+              doc="Retrieves the base gravity for the context. See
+pango_context_set_base_gravity()."
+              version="1.16">
+        <return-value transfer-ownership="full">
+          <type name="Gravity" c:type="PangoGravity"/>
+        </return-value>
+      </method>
+      <method name="get_gravity"
+              c:identifier="pango_context_get_gravity"
+              doc="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."
+              version="1.16">
+        <return-value transfer-ownership="full">
+          <type name="Gravity" c:type="PangoGravity"/>
+        </return-value>
+      </method>
+      <method name="set_gravity_hint"
+              c:identifier="pango_context_set_gravity_hint"
+              doc="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."
+              version="1.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="hint" transfer-ownership="none">
+            <type name="GravityHint" c:type="PangoGravityHint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_gravity_hint"
+              c:identifier="pango_context_get_gravity_hint"
+              doc="Retrieves the gravity hint for the context. See
+pango_context_set_gravity_hint() for details."
+              version="1.16">
+        <return-value transfer-ownership="full">
+          <type name="GravityHint" c:type="PangoGravityHint"/>
+        </return-value>
+      </method>
+      <method name="set_matrix"
+              c:identifier="pango_context_set_matrix"
+              doc="(No matrix set is the same as setting the identity matrix.)
+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&apos;t scale
+with the matrix, though they may change slightly for different
+matrices, depending on how the text is fit to the pixel grid."
+              version="1.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="matrix" transfer-ownership="none">
+            <type name="Matrix" c:type="PangoMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_matrix"
+              c:identifier="pango_context_get_matrix"
+              doc="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."
+              version="1.6">
+        <return-value transfer-ownership="none">
+          <type name="Matrix" c:type="PangoMatrix*"/>
+        </return-value>
+      </method>
+    </class>
+    <record name="ContextClass"
+            c:type="PangoContextClass"
+            glib:is-gtype-struct-for="Context">
+    </record>
+    <record name="Coverage" c:type="PangoCoverage">
+      <constructor name="new"
+                   c:identifier="pango_coverage_new"
+                   doc="Create a new #PangoCoverage
+initialized to %PANGO_COVERAGE_NONE
+with a reference count of one, which
+should be freed with pango_coverage_unref().">
+        <return-value transfer-ownership="full">
+          <type name="Coverage" c:type="PangoCoverage*"/>
+        </return-value>
+      </constructor>
+      <method name="ref"
+              c:identifier="pango_coverage_ref"
+              doc="Increase the reference count on the #PangoCoverage by one">
+        <return-value transfer-ownership="full">
+          <type name="Coverage" c:type="PangoCoverage*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="pango_coverage_unref"
+              doc="Decrease the reference count on the #PangoCoverage by one.
+If the result is zero, free the coverage and all associated memory.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="copy"
+              c:identifier="pango_coverage_copy"
+              doc="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().">
+        <return-value transfer-ownership="full">
+          <type name="Coverage" c:type="PangoCoverage*"/>
+        </return-value>
+      </method>
+      <method name="get"
+              c:identifier="pango_coverage_get"
+              doc="Determine whether a particular index is covered by @coverage">
+        <return-value transfer-ownership="full">
+          <type name="CoverageLevel" c:type="PangoCoverageLevel"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set"
+              c:identifier="pango_coverage_set"
+              doc="Modify a particular index within @coverage">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="level" transfer-ownership="none">
+            <type name="CoverageLevel" c:type="PangoCoverageLevel"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="max"
+              c:identifier="pango_coverage_max"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="other" transfer-ownership="none">
+            <type name="Coverage" c:type="PangoCoverage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_bytes"
+              c:identifier="pango_coverage_to_bytes"
+              doc="Convert a #PangoCoverage structure into a flat binary format">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="bytes" direction="out" transfer-ownership="full">
+            <type name="uint8" c:type="guchar**"/>
+          </parameter>
+          <parameter name="n_bytes" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </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"
+                 doc="same as %PANGO_DIRECTION_RTL.
+same as %PANGO_DIRECTION_LTR
+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&apos;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."
+                 glib:type-name="PangoDirection"
+                 glib:get-type="pango_direction_get_type"
+                 c:type="PangoDirection">
+      <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"/>
+    </constant>
+    <constant name="ENGINE_TYPE_SHAPE" value="PangoEngineShape">
+      <type name="utf8"/>
+    </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">
+    </record>
+    <record name="EngineShape" c:type="PangoEngineShape">
+    </record>
+    <class name="Font"
+           c:type="PangoFont"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="PangoFont"
+           glib:get-type="pango_font_get_type">
+      <function name="description_from_string"
+                c:identifier="pango_font_description_from_string"
+                doc="Creates a new font description from a string representation in the
+form &quot;[FAMILY-LIST] [STYLE-OPTIONS] [SIZE]&quot;, 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 &quot;px&quot; 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.">
+        <return-value transfer-ownership="full">
+          <type name="FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+        <parameters>
+          <parameter name="str" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </function>
+      <method name="describe"
+              c:identifier="pango_font_describe"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </method>
+      <method name="describe_with_absolute_size"
+              c:identifier="pango_font_describe_with_absolute_size"
+              doc="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."
+              version="1.14">
+        <return-value transfer-ownership="full">
+          <type name="FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </method>
+      <method name="get_coverage"
+              c:identifier="pango_font_get_coverage"
+              doc="Computes the coverage map for a given font and language tag.">
+        <return-value transfer-ownership="full">
+          <type name="Coverage" c:type="PangoCoverage*"/>
+        </return-value>
+        <parameters>
+          <parameter name="language" transfer-ownership="none">
+            <type name="Language" c:type="PangoLanguage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="find_shaper"
+              c:identifier="pango_font_find_shaper"
+              doc="Finds the best matching shaper for a font for a particular
+language tag and character point.">
+        <return-value transfer-ownership="full">
+          <type name="EngineShape" c:type="PangoEngineShape*"/>
+        </return-value>
+        <parameters>
+          <parameter name="language" transfer-ownership="none">
+            <type name="Language" c:type="PangoLanguage*"/>
+          </parameter>
+          <parameter name="ch" transfer-ownership="none">
+            <type name="uint32" c:type="guint32"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_metrics"
+              c:identifier="pango_font_get_metrics"
+              doc="for, or %NULL to indicate to get the metrics for the entire
+font.
+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.">
+        <return-value transfer-ownership="full">
+          <type name="FontMetrics" c:type="PangoFontMetrics*"/>
+        </return-value>
+        <parameters>
+          <parameter name="language" transfer-ownership="none">
+            <type name="Language" c:type="PangoLanguage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_glyph_extents"
+              c:identifier="pango_font_get_glyph_extents"
+              doc="or %NULL to indicate that the result is not needed.
+or %NULL to indicate that the result is not needed.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="glyph" transfer-ownership="none">
+            <type name="Glyph" c:type="PangoGlyph"/>
+          </parameter>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font_map"
+              c:identifier="pango_font_get_font_map"
+              doc="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."
+              version="1.10">
+        <return-value transfer-ownership="full">
+          <type name="FontMap" c:type="PangoFontMap*"/>
+        </return-value>
+      </method>
+    </class>
+    <record name="FontDescription"
+            c:type="PangoFontDescription"
+            glib:type-name="PangoFontDescription"
+            glib:get-type="pango_font_description_get_type">
+      <constructor name="new"
+                   c:identifier="pango_font_description_new"
+                   doc="Creates a new font description structure with all fields unset.
+should be freed using pango_font_description_free().">
+        <return-value transfer-ownership="full">
+          <type name="FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </constructor>
+      <method name="copy"
+              c:identifier="pango_font_description_copy"
+              doc="Make a copy of a #PangoFontDescription.
+be freed with pango_font_description_free(), or %NULL
+if @desc was %NULL.">
+        <return-value transfer-ownership="full">
+          <type name="FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </method>
+      <method name="copy_static"
+              c:identifier="pango_font_description_copy_static"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </method>
+      <method name="hash"
+              c:identifier="pango_font_description_hash"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="uint" c:type="guint"/>
+        </return-value>
+      </method>
+      <method name="equal"
+              c:identifier="pango_font_description_equal"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc2" transfer-ownership="none">
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="free"
+              c:identifier="pango_font_description_free"
+              doc="Frees a font description.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="_free"
+              c:identifier="pango_font_descriptions_free"
+              doc="Frees an array of font descriptions.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="n_descs" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_family"
+              c:identifier="pango_font_description_set_family"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="family" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_family_static"
+              c:identifier="pango_font_description_set_family_static"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="family" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_family"
+              c:identifier="pango_font_description_get_family"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="set_style"
+              c:identifier="pango_font_description_set_style"
+              doc="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.">
+        <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="PangoStyle"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_style"
+              c:identifier="pango_font_description_get_style"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Style" c:type="PangoStyle"/>
+        </return-value>
+      </method>
+      <method name="set_variant"
+              c:identifier="pango_font_description_set_variant"
+              doc="Sets the variant field of a font description. The #PangoVariant
+can either be %PANGO_VARIANT_NORMAL or %PANGO_VARIANT_SMALL_CAPS.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="variant" transfer-ownership="none">
+            <type name="Variant" c:type="PangoVariant"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_variant"
+              c:identifier="pango_font_description_get_variant"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Variant" c:type="PangoVariant"/>
+        </return-value>
+      </method>
+      <method name="set_weight"
+              c:identifier="pango_font_description_set_weight"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="weight" transfer-ownership="none">
+            <type name="Weight" c:type="PangoWeight"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_weight"
+              c:identifier="pango_font_description_get_weight"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Weight" c:type="PangoWeight"/>
+        </return-value>
+      </method>
+      <method name="set_stretch"
+              c:identifier="pango_font_description_set_stretch"
+              doc="Sets the stretch field of a font description. The stretch field
+specifies how narrow or wide the font should be.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="stretch" transfer-ownership="none">
+            <type name="Stretch" c:type="PangoStretch"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_stretch"
+              c:identifier="pango_font_description_get_stretch"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Stretch" c:type="PangoStretch"/>
+        </return-value>
+      </method>
+      <method name="set_size"
+              c:identifier="pango_font_description_set_size"
+              doc="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.
+Sets the size field of a font description in fractional points. This is mutually
+exclusive with pango_font_description_set_absolute_size().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size"
+              c:identifier="pango_font_description_get_size"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="set_absolute_size"
+              c:identifier="pango_font_description_set_absolute_size"
+              doc="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.
+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."
+              version="1.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size_is_absolute"
+              c:identifier="pango_font_description_get_size_is_absolute"
+              doc="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."
+              version="1.8">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_gravity"
+              c:identifier="pango_font_description_set_gravity"
+              doc="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."
+              version="1.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="gravity" transfer-ownership="none">
+            <type name="Gravity" c:type="PangoGravity"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_gravity"
+              c:identifier="pango_font_description_get_gravity"
+              doc="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."
+              version="1.16">
+        <return-value transfer-ownership="full">
+          <type name="Gravity" c:type="PangoGravity"/>
+        </return-value>
+      </method>
+      <method name="get_set_fields"
+              c:identifier="pango_font_description_get_set_fields"
+              doc="Determines which fields in a font description have been set.
+fields in @desc that have been set.">
+        <return-value transfer-ownership="full">
+          <type name="FontMask" c:type="PangoFontMask"/>
+        </return-value>
+      </method>
+      <method name="unset_fields"
+              c:identifier="pango_font_description_unset_fields"
+              doc="Unsets some of the fields in a #PangoFontDescription.  The unset
+fields will get back to their default values.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="to_unset" transfer-ownership="none">
+            <type name="FontMask" c:type="PangoFontMask"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge"
+              c:identifier="pango_font_description_merge"
+              doc="corresponding values from @desc_to_merge, even if they
+are already exist.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc_to_merge" transfer-ownership="none">
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+          <parameter name="replace_existing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="merge_static"
+              c:identifier="pango_font_description_merge_static"
+              doc="corresponding values from @desc_to_merge, even if they
+are already exist.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc_to_merge" transfer-ownership="none">
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+          <parameter name="replace_existing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="better_match"
+              c:identifier="pango_font_description_better_match"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="old_match" transfer-ownership="none">
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+          <parameter name="new_match" transfer-ownership="none">
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="to_string"
+              c:identifier="pango_font_description_to_string"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="to_filename"
+              c:identifier="pango_font_description_to_filename"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="FontFace"
+           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="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.">
+        <return-value transfer-ownership="full">
+          <type name="FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </method>
+      <method name="get_face_name"
+              c:identifier="pango_font_face_get_face_name"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="list_sizes"
+              c:identifier="pango_font_face_list_sizes"
+              doc="should be freed with g_free().
+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."
+              version="1.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="sizes" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int**"/>
+          </parameter>
+          <parameter name="n_sizes" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="is_synthesized"
+              c:identifier="pango_font_face_is_synthesized"
+              doc="Returns whether a #PangoFontFace is synthesized by the underlying
+font rendering engine from another face, perhaps by shearing, emboldening,
+or lightening it."
+              version="1.18">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </class>
+    <class name="FontFamily"
+           c:type="PangoFontFamily"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="PangoFontFamily"
+           glib:get-type="pango_font_family_get_type">
+      <method name="list_faces"
+              c:identifier="pango_font_family_list_faces"
+              doc="objects, or %NULL. This array should be freed with g_free()
+when it is no longer needed.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="faces" transfer-ownership="none">
+            <type name="FontFace" c:type="PangoFontFace***"/>
+          </parameter>
+          <parameter name="n_faces" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_name"
+              c:identifier="pango_font_family_get_name"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="is_monospace"
+              c:identifier="pango_font_family_is_monospace"
+              doc="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."
+              version="1.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </class>
+    <class name="FontMap"
+           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"
+              doc="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&apos;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()."
+              version="1.22">
+        <return-value transfer-ownership="full">
+          <type name="Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="load_font"
+              c:identifier="pango_font_map_load_font"
+              doc="Load the font in the fontmap that is the closest match for @desc.">
+        <return-value transfer-ownership="full">
+          <type name="Font" c:type="PangoFont*"/>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <type name="Context" c:type="PangoContext*"/>
+          </parameter>
+          <parameter name="desc" transfer-ownership="none">
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="load_fontset"
+              c:identifier="pango_font_map_load_fontset"
+              doc="Load a set of fonts in the fontmap that can be used to render
+a font matching @desc.">
+        <return-value transfer-ownership="full">
+          <type name="Fontset" c:type="PangoFontset*"/>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <type name="Context" c:type="PangoContext*"/>
+          </parameter>
+          <parameter name="desc" transfer-ownership="none">
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+          <parameter name="language" transfer-ownership="none">
+            <type name="Language" c:type="PangoLanguage*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="list_families"
+              c:identifier="pango_font_map_list_families"
+              doc="This array should be freed with g_free().
+List all families for a fontmap.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="families" transfer-ownership="none">
+            <type name="FontFamily" c:type="PangoFontFamily***"/>
+          </parameter>
+          <parameter name="n_families"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </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">
+      <method name="ref"
+              c:identifier="pango_font_metrics_ref"
+              doc="Increase the reference count of a font metrics structure by one.">
+        <return-value transfer-ownership="full">
+          <type name="FontMetrics" c:type="PangoFontMetrics*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="pango_font_metrics_unref"
+              doc="Decrease the reference count of a font metrics structure by one. If
+the result is zero, frees the structure and any associated
+memory.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_ascent"
+              c:identifier="pango_font_metrics_get_ascent"
+              doc="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.)">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_descent"
+              c:identifier="pango_font_metrics_get_descent"
+              doc="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.)">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_approximate_char_width"
+              c:identifier="pango_font_metrics_get_approximate_char_width"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_approximate_digit_width"
+              c:identifier="pango_font_metrics_get_approximate_digit_width"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_underline_position"
+              c:identifier="pango_font_metrics_get_underline_position"
+              doc="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."
+              version="1.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_underline_thickness"
+              c:identifier="pango_font_metrics_get_underline_thickness"
+              doc="Gets the suggested thickness to draw for the underline."
+              version="1.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_strikethrough_position"
+              c:identifier="pango_font_metrics_get_strikethrough_position"
+              doc="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."
+              version="1.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_strikethrough_thickness"
+              c:identifier="pango_font_metrics_get_strikethrough_thickness"
+              doc="Gets the suggested thickness to draw for the strikethrough."
+              version="1.6">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+    </record>
+    <class name="Fontset"
+           c:type="PangoFontset"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="PangoFontset"
+           glib:get-type="pango_fontset_get_type">
+      <method name="get_font"
+              c:identifier="pango_fontset_get_font"
+              doc="Returns the font in the fontset that contains the best glyph for the
+Unicode character @wc.
+with the font.">
+        <return-value transfer-ownership="full">
+          <type name="Font" c:type="PangoFont*"/>
+        </return-value>
+        <parameters>
+          <parameter name="wc" transfer-ownership="none">
+            <type name="uint" c:type="guint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_metrics"
+              c:identifier="pango_fontset_get_metrics"
+              doc="Get overall metric information for the fonts in the fontset.
+when finished using the object.">
+        <return-value transfer-ownership="full">
+          <type name="FontMetrics" c:type="PangoFontMetrics*"/>
+        </return-value>
+      </method>
+      <method name="foreach"
+              c:identifier="pango_fontset_foreach"
+              doc="Iterates through all the fonts in a fontset, calling @func for
+each one. If @func returns %TRUE, that stops the iteration."
+              version="1.4">
+        <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="FontsetForeachFunc" c:type="PangoFontsetForeachFunc"/>
+          </parameter>
+          <parameter name="data" transfer-ownership="none">
+            <type name="any" c:type="gpointer"/>
+          </parameter>
+        </parameters>
+      </method>
+    </class>
+    <callback name="FontsetForeachFunc" c:type="PangoFontsetForeachFunc">
+      <return-value transfer-ownership="none">
+        <type name="boolean" 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="any" 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">
+      <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="split"
+              c:identifier="pango_glyph_item_split"
+              doc="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&apos;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()."
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="GlyphItem" c:type="PangoGlyphItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="split_index" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy"
+              c:identifier="pango_glyph_item_copy"
+              doc="Make a deep copy of an existing #PangoGlyphItem structure.
+be freed with pango_glyph_item_free(), or %NULL
+if @orig was %NULL."
+              version="1.20">
+        <return-value transfer-ownership="full">
+          <type name="GlyphItem" c:type="PangoGlyphItem*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="pango_glyph_item_free"
+              doc="Frees a #PangoGlyphItem and resources to which it points."
+              version="1.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="apply_attrs"
+              c:identifier="pango_glyph_item_apply_attrs"
+              doc="Splits a shaped item (PangoGlyphItem) into multiple items based
+on an attribute list. The idea is that if you have attributes
+that don&apos;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()."
+              version="1.2">
+        <return-value transfer-ownership="full">
+          <type name="GLib.SList" c:type="GSList*"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="list" transfer-ownership="none">
+            <type name="AttrList" c:type="PangoAttrList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="letter_space"
+              c:identifier="pango_glyph_item_letter_space"
+              doc="(glyph_item-&gt;item-&gt;offset is an offset from the
+start of @text)
+first logical attribute refers to the position
+before the first character in the item)
+in Pango units. May be negative, though too large
+negative values will give ugly results.
+Adds spacing between the graphemes of @glyph_item to
+give the effect of typographic letter spacing."
+              version="1.6">
+        <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="char*"/>
+          </parameter>
+          <parameter name="log_attrs" transfer-ownership="none">
+            <type name="LogAttr" c:type="PangoLogAttr*"/>
+          </parameter>
+          <parameter name="letter_spacing" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_logical_widths"
+              c:identifier="pango_glyph_item_get_logical_widths"
+              doc="(glyph_item-&gt;item-&gt;offset is an offset from the
+start of @text)
+glyph_item (equal to glyph_item-&gt;item-&gt;num_chars)
+to be filled in with the resulting character widths.
+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()."
+              version="1.26">
+        <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="char*"/>
+          </parameter>
+          <parameter name="logical_widths"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" 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">
+      <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="int" c:type="int"/>
+      </field>
+      <field name="start_index" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="start_char" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="end_glyph" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="end_index" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="end_char" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <method name="copy"
+              c:identifier="pango_glyph_item_iter_copy"
+              doc="Make a shallow copy of an existing #PangoGlyphItemIter structure.
+be freed with pango_glyph_item_iter_free(), or %NULL
+if @orig was %NULL."
+              version="1.22">
+        <return-value transfer-ownership="full">
+          <type name="GlyphItemIter" c:type="PangoGlyphItemIter*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="pango_glyph_item_iter_free"
+              doc="Frees a #PangoGlyphItemIter created by pango_glyph_item_iter_copy()."
+              version="1.22">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="init_start"
+              c:identifier="pango_glyph_item_iter_init_start"
+              doc="Initializes a #PangoGlyphItemIter structure to point to the
+first cluster in a glyph item.
+See #PangoGlyphItemIter for details of cluster orders."
+              version="1.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="glyph_item" transfer-ownership="none">
+            <type name="GlyphItem" c:type="PangoGlyphItem*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="init_end"
+              c:identifier="pango_glyph_item_iter_init_end"
+              doc="Initializes a #PangoGlyphItemIter structure to point to the
+last cluster in a glyph item.
+See #PangoGlyphItemIter for details of cluster orders."
+              version="1.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="glyph_item" transfer-ownership="none">
+            <type name="GlyphItem" c:type="PangoGlyphItem*"/>
+          </parameter>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next_cluster"
+              c:identifier="pango_glyph_item_iter_next_cluster"
+              doc="Advances the iterator to the next cluster in the glyph item.
+See #PangoGlyphItemIter for details of cluster orders.
+last cluster."
+              version="1.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="prev_cluster"
+              c:identifier="pango_glyph_item_iter_prev_cluster"
+              doc="Moves the iterator to the preceding cluster in the glyph item.
+See #PangoGlyphItemIter for details of cluster orders.
+first cluster."
+              version="1.22">
+        <return-value transfer-ownership="none">
+          <type name="boolean" 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">
+      <field name="num_glyphs" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="glyphs" writable="1">
+        <type name="GlyphInfo" c:type="PangoGlyphInfo*"/>
+      </field>
+      <field name="log_clusters" writable="1">
+        <type name="any" c:type="gint*"/>
+      </field>
+      <field name="space" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="pango_glyph_string_new"
+                   doc="Create a new #PangoGlyphString.
+should be freed with pango_glyph_string_free().">
+        <return-value transfer-ownership="full">
+          <type name="GlyphString" c:type="PangoGlyphString*"/>
+        </return-value>
+      </constructor>
+      <method name="set_size"
+              c:identifier="pango_glyph_string_set_size"
+              doc="Resize a glyph string to the given length.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_len" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="copy"
+              c:identifier="pango_glyph_string_copy"
+              doc="Copy a glyph string and associated storage.
+should be freed with pango_glyph_string_free(),
+or %NULL if @string was %NULL.">
+        <return-value transfer-ownership="full">
+          <type name="GlyphString" c:type="PangoGlyphString*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="pango_glyph_string_free"
+              doc="Free a glyph string and associated storage.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="extents"
+              c:identifier="pango_glyph_string_extents"
+              doc="or %NULL to indicate that the result is not needed.
+or %NULL to indicate that the result is not needed.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font" transfer-ownership="none">
+            <type name="Font" c:type="PangoFont*"/>
+          </parameter>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width"
+              c:identifier="pango_glyph_string_get_width"
+              doc="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&apos;s much faster.  This is in fact only a convenience function that
+computes the sum of geometry.width for each glyph in the @glyphs."
+              version="1.14">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="extents_range"
+              c:identifier="pango_glyph_string_extents_range"
+              doc="dices such that start &lt;= index &lt; end)
+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).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="font" transfer-ownership="none">
+            <type name="Font" c:type="PangoFont*"/>
+          </parameter>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_logical_widths"
+              c:identifier="pango_glyph_string_get_logical_widths"
+              doc="text (equal to g_utf8_strlen (text, length) unless
+text has NUL bytes)
+to be filled in with the resulting character widths.
+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().">
+        <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="char*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="embedding_level" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="logical_widths"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="index_to_x"
+              c:identifier="pango_glyph_string_index_to_x"
+              doc="or end (%TRUE) of the character.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="full">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none" doc="in @text.">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="analysis" transfer-ownership="none">
+            <type name="Analysis" c:type="PangoAnalysis*"/>
+          </parameter>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="trailing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="x_pos" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="x_to_index"
+              c:identifier="pango_glyph_string_x_to_index"
+              doc="whether the user clicked on the leading or trailing
+edge of the character.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="full">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none" doc="in text.">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="analysis" transfer-ownership="none">
+            <type name="Analysis" c:type="PangoAnalysis*"/>
+          </parameter>
+          <parameter name="x_pos" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="index_" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+          <parameter name="trailing" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="GlyphVisAttr" c:type="PangoGlyphVisAttr">
+      <field name="is_cluster_start" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <enumeration name="Gravity"
+                 doc="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()."
+                 version="1.16"
+                 glib:type-name="PangoGravity"
+                 glib:get-type="pango_gravity_get_type"
+                 c:type="PangoGravity">
+      <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"
+                 doc="on the base gravity and the script.  This is the default.
+the script.
+Latin in East gravity), choose per-script gravity such that every script
+respects the line progression.  This means, Latin and Arabic will take
+opposite gravities and both flow top-to-bottom for example.
+The #PangoGravityHint defines how horizontal scripts should behave in a
+vertical context.  That is, English excerpt in a vertical paragraph for
+example.
+See #PangoGravity."
+                 version="1.16"
+                 glib:type-name="PangoGravityHint"
+                 glib:get-type="pango_gravity_hint_get_type"
+                 c:type="PangoGravityHint">
+      <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">
+      <field name="offset" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="length" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="num_chars" writable="1">
+        <type name="int" 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="Creates a new #PangoItem structure initialized to default values.
+be freed with pango_item_free().">
+        <return-value transfer-ownership="full">
+          <type name="Item" c:type="PangoItem*"/>
+        </return-value>
+      </constructor>
+      <method name="copy"
+              c:identifier="pango_item_copy"
+              doc="Copy an existing #PangoItem structure.
+be freed with pango_item_free(), or %NULL if">
+        <return-value transfer-ownership="full">
+          <type name="Item" c:type="PangoItem*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="pango_item_free"
+              doc="Free a #PangoItem and all associated memory.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="split"
+              c:identifier="pango_item_split"
+              doc="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&apos;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&apos;t available, so pango_item_split() can&apos;t count the char
+length of the split items itself.
+should be freed with pango_item_free().">
+        <return-value transfer-ownership="full">
+          <type name="Item" c:type="PangoItem*"/>
+        </return-value>
+        <parameters>
+          <parameter name="split_index" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="split_offset" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="Language"
+            c:type="PangoLanguage"
+            glib:type-name="PangoLanguage"
+            glib:get-type="pango_language_get_type">
+      <method name="to_string"
+              c:identifier="pango_language_to_string"
+              doc="Gets the RFC-3066 format string representing the given language tag.
+Pango and should not be freed.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="get_sample_string"
+              c:identifier="pango_language_get_sample_string"
+              doc="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
+&quot;The quick brown fox...&quot; is returned.  This can be detected by
+comparing the returned pointer value to that returned for (non-existent)
+language code &quot;xx&quot;.  That is, compare to:
+&lt;informalexample&gt;&lt;programlisting&gt;
+pango_language_get_sample_string (pango_language_from_string (&quot;xx&quot;))
+&lt;/programlisting&gt;&lt;/informalexample&gt;
+and should not be freed.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="matches"
+              c:identifier="pango_language_matches"
+              doc="%NULL is allowed and matches nothing but &apos;*&apos;
+&apos;,&apos;, or space characters.
+Each element must either be &apos;*&apos;, or a RFC 3066 language range
+canonicalized as by pango_language_from_string()
+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 &apos;*&apos;, the range is exactly the tag,
+or the range is a prefix of the tag, and the character after it
+in the tag is &apos;-&apos;.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="range_list" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="includes_script"
+              c:identifier="pango_language_includes_script"
+              doc="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&apos;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."
+              version="1.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="script" transfer-ownership="none">
+            <type name="Script" c:type="PangoScript"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_scripts"
+              c:identifier="pango_language_get_scripts"
+              doc="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."
+              version="1.22">
+        <return-value transfer-ownership="none">
+          <type name="Script" c:type="PangoScript*"/>
+        </return-value>
+        <parameters>
+          <parameter name="num_scripts"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <class name="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="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().">
+        <return-value transfer-ownership="full">
+          <type name="Layout" c:type="PangoLayout*"/>
+        </return-value>
+        <parameters>
+          <parameter name="context" transfer-ownership="none">
+            <type name="Context" c:type="PangoContext*"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="pango_layout_copy"
+              doc="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().">
+        <return-value transfer-ownership="full">
+          <type name="Layout" c:type="PangoLayout*"/>
+        </return-value>
+      </method>
+      <method name="get_context"
+              c:identifier="pango_layout_get_context"
+              doc="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.">
+        <return-value transfer-ownership="full">
+          <type name="Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+      <method name="set_attributes"
+              c:identifier="pango_layout_set_attributes"
+              doc="Sets the text attributes for a layout object.
+References @attrs, so the caller can unref its reference.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attrs" transfer-ownership="none">
+            <type name="AttrList" c:type="PangoAttrList*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_attributes"
+              c:identifier="pango_layout_get_attributes"
+              doc="Gets the attribute list for the layout, if any.">
+        <return-value transfer-ownership="full">
+          <type name="AttrList" c:type="PangoAttrList*"/>
+        </return-value>
+      </method>
+      <method name="set_text"
+              c:identifier="pango_layout_set_text"
+              doc="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.
+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.">
+        <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="char*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_text"
+              c:identifier="pango_layout_get_text"
+              doc="Gets the text in the layout. The returned text should not
+be freed or modified.">
+        <return-value transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </return-value>
+      </method>
+      <method name="set_markup"
+              c:identifier="pango_layout_set_markup"
+              doc="nul-terminated
+Same as pango_layout_set_markup_with_accel(), but
+the markup text isn&apos;t scanned for accelerators.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_markup_with_accel"
+              c:identifier="pango_layout_set_markup_with_accel"
+              doc="(see &lt;link linkend=&quot;PangoMarkupFormat&quot;&gt;markup format&lt;/link&gt;)
+nul-terminated
+Sets the layout text and attribute list from marked-up text (see
+&lt;link linkend=&quot;PangoMarkupFormat&quot;&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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="markup" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="accel_marker" transfer-ownership="none">
+            <type name="GLib.unichar" c:type="gunichar"/>
+          </parameter>
+          <parameter name="accel_char" transfer-ownership="none">
+            <type name="GLib.unichar" c:type="gunichar*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_font_description"
+              c:identifier="pango_layout_set_font_description"
+              doc="current font description
+Sets the default font description for the layout. If no font
+description is set on the layout, the font description from
+the layout&apos;s context is used.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="desc" transfer-ownership="none">
+            <type name="FontDescription" c:type="PangoFontDescription*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font_description"
+              c:identifier="pango_layout_get_font_description"
+              doc="Gets the font description for the layout, if any.
+or %NULL if the font description from the layout&apos;s
+context is inherited. This value is owned by the layout
+and must not be modified or freed."
+              version="1.8">
+        <return-value transfer-ownership="none">
+          <type name="FontDescription" c:type="PangoFontDescription*"/>
+        </return-value>
+      </method>
+      <method name="set_width"
+              c:identifier="pango_layout_set_width"
+              doc="wrapping or ellipsization should be performed.
+Sets the width to which the lines of the #PangoLayout should wrap or">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="width" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_width"
+              c:identifier="pango_layout_get_width"
+              doc="Gets the width to which the lines of the #PangoLayout should wrap.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="set_height"
+              c:identifier="pango_layout_set_height"
+              doc="or desired number of lines if negative.
+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=&quot;http://bugzilla.gnome.org/&quot;&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."
+              version="1.20">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="height" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_height"
+              c:identifier="pango_layout_get_height"
+              doc="Gets the height of layout used for ellipsization.  See
+pango_layout_set_height() for details.
+number of lines if negative."
+              version="1.20">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="set_wrap"
+              c:identifier="pango_layout_set_wrap"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="wrap" transfer-ownership="none">
+            <type name="WrapMode" c:type="PangoWrapMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_wrap"
+              c:identifier="pango_layout_get_wrap"
+              doc="Gets the wrap mode for the layout.
+Use pango_layout_is_wrapped() to query whether any paragraphs
+were actually wrapped.">
+        <return-value transfer-ownership="full">
+          <type name="WrapMode" c:type="PangoWrapMode"/>
+        </return-value>
+      </method>
+      <method name="is_wrapped"
+              c:identifier="pango_layout_is_wrapped"
+              doc="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."
+              version="1.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </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="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_indent"
+              c:identifier="pango_layout_get_indent"
+              doc="Gets the paragraph indent width in Pango units. A negative value
+indicates a hanging indentation.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="set_spacing"
+              c:identifier="pango_layout_set_spacing"
+              doc="Sets the amount of spacing in Pango unit between the lines of the
+layout.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="spacing" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_spacing"
+              c:identifier="pango_layout_get_spacing"
+              doc="Gets the amount of spacing between the lines of the layout.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="set_justify"
+              c:identifier="pango_layout_set_justify"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="justify" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_justify"
+              c:identifier="pango_layout_get_justify"
+              doc="Gets whether each complete line should be stretched to fill the entire
+width of the layout.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_auto_dir"
+              c:identifier="pango_layout_set_auto_dir"
+              doc="from the layout&apos;s contents.
+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
+ayout that begin with strong right-to-left characters
+(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&apos;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."
+              version="1.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="auto_dir" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_auto_dir"
+              c:identifier="pango_layout_get_auto_dir"
+              doc="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&apos;s contents, %FALSE otherwise."
+              version="1.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_alignment"
+              c:identifier="pango_layout_set_alignment"
+              doc="positioned within the horizontal space available.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alignment" transfer-ownership="none">
+            <type name="Alignment" c:type="PangoAlignment"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_alignment"
+              c:identifier="pango_layout_get_alignment"
+              doc="positioned within the horizontal space available.">
+        <return-value transfer-ownership="full">
+          <type name="Alignment" c:type="PangoAlignment"/>
+        </return-value>
+      </method>
+      <method name="set_tabs"
+              c:identifier="pango_layout_set_tabs"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tabs" transfer-ownership="none">
+            <type name="TabArray" c:type="PangoTabArray*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tabs"
+              c:identifier="pango_layout_get_tabs"
+              doc="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().">
+        <return-value transfer-ownership="full">
+          <type name="TabArray" c:type="PangoTabArray*"/>
+        </return-value>
+      </method>
+      <method name="set_single_paragraph_mode"
+              c:identifier="pango_layout_set_single_paragraph_mode"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="setting" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_single_paragraph_mode"
+              c:identifier="pango_layout_get_single_paragraph_mode"
+              doc="Obtains the value set by pango_layout_set_single_paragraph_mode().
+paragraph separator characters, %FALSE otherwise.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="set_ellipsize"
+              c:identifier="pango_layout_set_ellipsize"
+              doc="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."
+              version="1.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ellipsize" transfer-ownership="none">
+            <type name="EllipsizeMode" c:type="PangoEllipsizeMode"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_ellipsize"
+              c:identifier="pango_layout_get_ellipsize"
+              doc="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."
+              version="1.6">
+        <return-value transfer-ownership="full">
+          <type name="EllipsizeMode" c:type="PangoEllipsizeMode"/>
+        </return-value>
+      </method>
+      <method name="is_ellipsized"
+              c:identifier="pango_layout_is_ellipsized"
+              doc="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."
+              version="1.16">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_unknown_glyphs_count"
+              c:identifier="pango_layout_get_unknown_glyphs_count"
+              doc="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."
+              version="1.16">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="context_changed"
+              c:identifier="pango_layout_context_changed"
+              doc="Forces recomputation of any state in the #PangoLayout that
+might depend on the layout&apos;s context. This function should
+be called if you make changes to the context subsequent
+to creating the layout.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_log_attrs"
+              c:identifier="pango_layout_get_log_attrs"
+              doc="This value must be freed with g_free().
+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.)
+Retrieves an array of logical attributes for each character in
+the @layout.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="attrs" transfer-ownership="none">
+            <type name="LogAttr" c:type="PangoLogAttr**"/>
+          </parameter>
+          <parameter name="n_attrs" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="index_to_pos"
+              c:identifier="pango_layout_index_to_pos"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="pos" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="index_to_line_x"
+              c:identifier="pango_layout_index_to_line_x"
+              doc="position of. If 0, the trailing edge of the grapheme, if &gt; 0,
+the leading of the grapheme.
+between 0 and pango_layout_get_line_count(layout) - 1)
+(%PANGO_SCALE units per device unit)
+Converts from byte @index_ within the @layout to line and X position.
+(X position is measured from the left edge of the line)">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="trailing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="line" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+          <parameter name="x_pos" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cursor_pos"
+              c:identifier="pango_layout_get_cursor_pos"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="strong_pos" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="weak_pos" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="move_cursor_visually"
+              c:identifier="pango_layout_move_cursor_visually"
+              doc="weak cursor. The strong cursor is the cursor corresponding
+to text insertion in the base direction for the layout.
+grapheme indicated by @old_index, if &gt; 0, the cursor
+was at the leading edge.
+value indicates motion to the left.
+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.
+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.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="strong" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="old_index" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="old_trailing" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="direction" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="new_index"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+          <parameter name="new_trailing"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="xy_to_index"
+              c:identifier="pango_layout_xy_to_index"
+              doc="from the left edge of the layout.
+from the top edge of the layout
+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.
+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.">
+        <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="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="index_" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+          <parameter name="trailing" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_extents"
+              c:identifier="pango_layout_get_extents"
+              doc="or %NULL to indicate that the result is not needed.
+%NULL to indicate that the result is not needed.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixel_extents"
+              c:identifier="pango_layout_get_pixel_extents"
+              doc="or %NULL to indicate that the result is not needed.
+layout or %NULL to indicate that the result is not needed.
+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()).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_size"
+              c:identifier="pango_layout_get_size"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="get_pixel_size"
+              c:identifier="pango_layout_get_pixel_size"
+              doc="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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <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>
+      </method>
+      <method name="get_baseline"
+              c:identifier="pango_layout_get_baseline"
+              doc="Gets the Y position of baseline of the first line in @layout."
+              version="1.22">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_line_count"
+              c:identifier="pango_layout_get_line_count"
+              doc="Retrieves the count of lines for the @layout.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_line"
+              c:identifier="pango_layout_get_line"
+              doc="&lt;literal&gt;pango_layout_get_line_count(layout) - 1&lt;/literal&gt;, inclusive.
+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&apos;ed and retained, but will become invalid
+if changes are made to the #PangoLayout.">
+        <return-value transfer-ownership="full">
+          <type name="LayoutLine" c:type="PangoLayoutLine*"/>
+        </return-value>
+        <parameters>
+          <parameter name="line" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line_readonly"
+              c:identifier="pango_layout_get_line_readonly"
+              doc="&lt;literal&gt;pango_layout_get_line_count(layout) - 1&lt;/literal&gt;, inclusive.
+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&apos;ed and retained, but will become invalid
+if changes are made to the #PangoLayout.
+No changes should be made to the line."
+              version="1.16">
+        <return-value transfer-ownership="full">
+          <type name="LayoutLine" c:type="PangoLayoutLine*"/>
+        </return-value>
+        <parameters>
+          <parameter name="line" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_lines"
+              c:identifier="pango_layout_get_lines"
+              doc="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&apos;s
+text or properties.">
+        <return-value transfer-ownership="none" doc="a #GSList containing">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Pango.LayoutLine"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_lines_readonly"
+              c:identifier="pango_layout_get_lines_readonly"
+              doc="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&apos;s
+text or properties.  No changes should be made to the lines."
+              version="1.16">
+        <return-value transfer-ownership="none" doc="a #GSList containing">
+          <type name="GLib.SList" c:type="GSList*">
+            <type name="Pango.LayoutLine"/>
+          </type>
+        </return-value>
+      </method>
+      <method name="get_iter"
+              c:identifier="pango_layout_get_iter"
+              doc="Returns an iterator to iterate over the visual extents of the layout.
+pango_layout_iter_free().">
+        <return-value transfer-ownership="full">
+          <type name="LayoutIter" c:type="PangoLayoutIter*"/>
+        </return-value>
+      </method>
+      <field name="parent_instance">
+        <type name="GObject.Object" c:type="GObject"/>
+      </field>
+      <field name="context">
+        <type name="Context" c:type="PangoContext*"/>
+      </field>
+      <field name="attrs">
+        <type name="AttrList" c:type="PangoAttrList*"/>
+      </field>
+      <field name="font_desc">
+        <type name="FontDescription" c:type="PangoFontDescription*"/>
+      </field>
+      <field name="tabs">
+        <type name="TabArray" c:type="PangoTabArray*"/>
+      </field>
+      <field name="text">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="copy_begin">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="length">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="n_chars">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="width">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="height">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="indent">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="spacing">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="justify" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="alignment" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="single_paragraph" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="auto_dir" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="wrap" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_wrapped" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="ellipsize" bits="2">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_ellipsized" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="unknown_glyphs_count">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="logical_rect_cached" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="ink_rect_cached" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="logical_rect">
+        <type name="Rectangle" c:type="PangoRectangle"/>
+      </field>
+      <field name="ink_rect">
+        <type name="Rectangle" c:type="PangoRectangle"/>
+      </field>
+      <field name="tab_width">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="copy_end">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="log_attrs">
+        <type name="LogAttr" c:type="PangoLogAttr*"/>
+      </field>
+      <field name="lines">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="line_count">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </class>
+    <record name="LayoutClass"
+            c:type="PangoLayoutClass"
+            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">
+      <method name="copy"
+              c:identifier="pango_layout_iter_copy"
+              doc="Copies a #PangLayoutIter.
+be freed with pango_layout_iter_free(), or %NULL if"
+              version="1.20">
+        <return-value transfer-ownership="full">
+          <type name="LayoutIter" c:type="PangoLayoutIter*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="pango_layout_iter_free"
+              doc="Frees an iterator that&apos;s no longer in use.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_index"
+              c:identifier="pango_layout_iter_get_index"
+              doc="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()).">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+      <method name="get_run"
+              c:identifier="pango_layout_iter_get_run"
+              doc="Gets the current run. When iterating by run, at the end of each
+line, there&apos;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.).">
+        <return-value transfer-ownership="full">
+          <type name="LayoutRun" c:type="PangoLayoutRun*"/>
+        </return-value>
+      </method>
+      <method name="get_run_readonly"
+              c:identifier="pango_layout_iter_get_run_readonly"
+              doc="Gets the current run. When iterating by run, at the end of each
+line, there&apos;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.)."
+              version="1.16">
+        <return-value transfer-ownership="full">
+          <type name="LayoutRun" c:type="PangoLayoutRun*"/>
+        </return-value>
+      </method>
+      <method name="get_line"
+              c:identifier="pango_layout_iter_get_line"
+              doc="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.).">
+        <return-value transfer-ownership="full">
+          <type name="LayoutLine" c:type="PangoLayoutLine*"/>
+        </return-value>
+      </method>
+      <method name="get_line_readonly"
+              c:identifier="pango_layout_iter_get_line_readonly"
+              doc="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.)."
+              version="1.16">
+        <return-value transfer-ownership="full">
+          <type name="LayoutLine" c:type="PangoLayoutLine*"/>
+        </return-value>
+      </method>
+      <method name="at_last_line"
+              c:identifier="pango_layout_iter_at_last_line"
+              doc="Determines whether @iter is on the last line of the layout.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_layout"
+              c:identifier="pango_layout_iter_get_layout"
+              doc="Gets the layout associated with a #PangoLayoutIter."
+              version="1.20">
+        <return-value transfer-ownership="full">
+          <type name="Layout" c:type="PangoLayout*"/>
+        </return-value>
+      </method>
+      <method name="next_char"
+              c:identifier="pango_layout_iter_next_char"
+              doc="Moves @iter forward to the next character in visual order. If @iter was already at
+the end of the layout, returns %FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="next_cluster"
+              c:identifier="pango_layout_iter_next_cluster"
+              doc="Moves @iter forward to the next cluster in visual order. If @iter
+was already at the end of the layout, returns %FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="next_run"
+              c:identifier="pango_layout_iter_next_run"
+              doc="Moves @iter forward to the next run in visual order. If @iter was
+already at the end of the layout, returns %FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="next_line"
+              c:identifier="pango_layout_iter_next_line"
+              doc="Moves @iter forward to the start of the next line. If @iter is
+already on the last line, returns %FALSE.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="get_char_extents"
+              c:identifier="pango_layout_iter_get_char_extents"
+              doc="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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_cluster_extents"
+              c:identifier="pango_layout_iter_get_cluster_extents"
+              doc="Gets the extents of the current cluster, in layout coordinates
+(origin is the top left of the entire layout).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_run_extents"
+              c:identifier="pango_layout_iter_get_run_extents"
+              doc="Gets the extents of the current run in layout coordinates
+(origin is the top left of the entire layout).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line_extents"
+              c:identifier="pango_layout_iter_get_line_extents"
+              doc="Obtains the extents of the current line. @ink_rect or @logical_rect
+can be %NULL if you aren&apos;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().">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_line_yrange"
+              c:identifier="pango_layout_iter_get_line_yrange"
+              doc="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&apos;s range includes the line&apos;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).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="y0_" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+          <parameter name="y1_" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_layout_extents"
+              c:identifier="pango_layout_iter_get_layout_extents"
+              doc="Obtains the extents of the #PangoLayout being iterated
+over. @ink_rect or @logical_rect can be %NULL if you
+aren&apos;t interested in them.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_baseline"
+              c:identifier="pango_layout_iter_get_baseline"
+              doc="Gets the Y position of the current line&apos;s baseline, in layout
+coordinates (origin at top left of the entire layout).">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="LayoutLine"
+            c:type="PangoLayoutLine"
+            glib:type-name="PangoLayoutLine"
+            glib:get-type="pango_layout_line_get_type">
+      <field name="layout" writable="1">
+        <type name="Layout" c:type="PangoLayout*"/>
+      </field>
+      <field name="start_index" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="length" writable="1">
+        <type name="int" c:type="gint"/>
+      </field>
+      <field name="runs" writable="1">
+        <type name="GLib.SList" c:type="GSList*"/>
+      </field>
+      <field name="is_paragraph_start" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="resolved_dir" writable="1" bits="3">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <method name="ref"
+              c:identifier="pango_layout_line_ref"
+              doc="Increase the reference count of a #PangoLayoutLine by one."
+              version="1.10">
+        <return-value transfer-ownership="full">
+          <type name="LayoutLine" c:type="PangoLayoutLine*"/>
+        </return-value>
+      </method>
+      <method name="unref"
+              c:identifier="pango_layout_line_unref"
+              doc="Decrease the reference count of a #PangoLayoutLine by one.
+If the result is zero, the line and all associated memory
+will be freed.">
+        <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="from the left edge of the line.
+the grapheme in which the user clicked.
+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.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+        <parameters>
+          <parameter name="x_pos" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="index_" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+          <parameter name="trailing" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="index_to_x"
+              c:identifier="pango_layout_line_index_to_x"
+              doc="the position of. If &gt; 0, the trailing edge of the grapheme,
+if 0, the leading of the grapheme.
+Converts an index within a line to a X position.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="index_" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="trailing" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="x_pos" transfer-ownership="none">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_x_ranges"
+              c:identifier="pango_layout_line_get_x_ranges"
+              doc="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.
+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.
+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.
+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.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start_index" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="end_index" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="ranges" direction="out" transfer-ownership="full">
+            <array length="4" c:type="int**">
+              <type name="int"/>
+            </array>
+          </parameter>
+          <parameter name="n_ranges" direction="out" transfer-ownership="full">
+            <type name="int" c:type="int*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_extents"
+              c:identifier="pango_layout_line_get_extents"
+              doc="as drawn, or %NULL
+string, or %NULL
+Computes the logical and ink extents of a layout line. See
+pango_font_get_glyph_extents() for details about the interpretation
+of the rectangles.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_pixel_extents"
+              c:identifier="pango_layout_line_get_pixel_extents"
+              doc="as drawn, or %NULL
+string, or %NULL
+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()).">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="ink_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+          <parameter name="logical_rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+    </record>
+    <record name="LogAttr" c:type="PangoLogAttr">
+      <field name="is_line_break" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_mandatory_break" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_char_break" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_white" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_cursor_position" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_word_start" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_word_end" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_sentence_boundary" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_sentence_start" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_sentence_end" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="backspace_deletes_character" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_expandable_space" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+      <field name="is_word_boundary" writable="1" bits="1">
+        <type name="uint" c:type="guint"/>
+      </field>
+    </record>
+    <record name="Matrix"
+            c:type="PangoMatrix"
+            doc="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;"
+            version="1.6"
+            glib:type-name="PangoMatrix"
+            glib:get-type="pango_matrix_get_type">
+      <field name="xx" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+      <field name="xy" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+      <field name="yx" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+      <field name="yy" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+      <field name="x0" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+      <field name="y0" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+      <method name="copy"
+              c:identifier="pango_matrix_copy"
+              doc="Copies a #PangoMatrix.
+be freed with pango_matrix_free(), or %NULL if"
+              version="1.6">
+        <return-value transfer-ownership="full">
+          <type name="Matrix" c:type="PangoMatrix*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="pango_matrix_free"
+              doc="Free a #PangoMatrix created with pango_matrix_copy()."
+              version="1.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="translate"
+              c:identifier="pango_matrix_translate"
+              doc="Changes the transformation represented by @matrix to be the
+transformation given by first translating by (@tx, @ty)
+then applying the original transformation."
+              version="1.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tx" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="ty" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="scale"
+              c:identifier="pango_matrix_scale"
+              doc="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."
+              version="1.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="scale_x" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="scale_y" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="rotate"
+              c:identifier="pango_matrix_rotate"
+              doc="Changes the transformation represented by @matrix to be the
+transformation given by first rotating by @degrees degrees
+counter-clockwise then applying the original transformation."
+              version="1.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="degrees" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="concat"
+              c:identifier="pango_matrix_concat"
+              doc="Changes the transformation represented by @matrix to be the
+transformation given by first applying transformation
+given by @new_matrix then applying the original transformation."
+              version="1.6">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_matrix" transfer-ownership="none">
+            <type name="Matrix" c:type="PangoMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="transform_point"
+              c:identifier="pango_matrix_transform_point"
+              doc="Transforms the point (@x, @y) by @matrix."
+              version="1.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="x" direction="out" transfer-ownership="full">
+            <type name="double" c:type="double*"/>
+          </parameter>
+          <parameter name="y" direction="out" transfer-ownership="full">
+            <type name="double" c:type="double*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="transform_distance"
+              c:identifier="pango_matrix_transform_distance"
+              doc="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."
+              version="1.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dx" direction="out" transfer-ownership="full">
+            <type name="double" c:type="double*"/>
+          </parameter>
+          <parameter name="dy" direction="out" transfer-ownership="full">
+            <type name="double" c:type="double*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="transform_rectangle"
+              c:identifier="pango_matrix_transform_rectangle"
+              doc="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)."
+              version="1.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="transform_pixel_rectangle"
+              c:identifier="pango_matrix_transform_pixel_rectangle"
+              doc="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()&apos;s first argument."
+              version="1.16">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="rect" transfer-ownership="none">
+            <type name="Rectangle" c:type="PangoRectangle*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_font_scale_factor"
+              c:identifier="pango_matrix_get_font_scale_factor"
+              doc="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."
+              version="1.12">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="ParenStackEntry" c:type="ParenStackEntry">
+      <field name="pair_index" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="script_code" writable="1">
+        <type name="Script" c:type="PangoScript"/>
+      </field>
+    </record>
+    <constant name="RENDER_TYPE_NONE" value="PangoRenderNone">
+      <type name="utf8"/>
+    </constant>
+    <record name="Rectangle" c:type="PangoRectangle">
+      <field name="x" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="y" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="width" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="height" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+    </record>
+    <enumeration name="RenderPart"
+                 doc="#PangoRenderPart defines different items to render for such
+purposes as setting colors."
+                 version="1.8"
+                 glib:type-name="PangoRenderPart"
+                 glib:get-type="pango_render_part_get_type"
+                 c:type="PangoRenderPart">
+      <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:type="PangoRenderer"
+           doc="be %NULL, which should be treated the same as the identity matrix.
+#PangoRenderer is a base class for objects that are used to
+render Pango objects such as #PangoGlyphString and
+#PangoLayout."
+           version="1.8"
+           parent="GObject.Object"
+           abstract="1"
+           glib:type-name="PangoRenderer"
+           glib:get-type="pango_renderer_get_type"
+           glib:type-struct="RendererClass">
+      <virtual-method name="draw_glyphs" invoker="draw_glyphs">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font" transfer-ownership="none">
+            <type name="Font" c:type="PangoFont*"/>
+          </parameter>
+          <parameter name="glyphs" transfer-ownership="none">
+            <type name="GlyphString" c:type="PangoGlyphString*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_rectangle" invoker="draw_rectangle">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="part" transfer-ownership="none">
+            <type name="RenderPart" c:type="PangoRenderPart"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="y" 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>
+      </virtual-method>
+      <virtual-method name="draw_error_underline"
+                      invoker="draw_error_underline">
+        <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="int"/>
+          </parameter>
+          <parameter name="y" 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>
+      </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="int" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_trapezoid" invoker="draw_trapezoid">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="part" transfer-ownership="none">
+            <type name="RenderPart" c:type="PangoRenderPart"/>
+          </parameter>
+          <parameter name="y1_" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="x11" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="x21" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="y2" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="x12" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="x22" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="draw_glyph" invoker="draw_glyph">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font" transfer-ownership="none">
+            <type name="Font" c:type="PangoFont*"/>
+          </parameter>
+          <parameter name="glyph" transfer-ownership="none">
+            <type name="Glyph" c:type="PangoGlyph"/>
+          </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>
+      </virtual-method>
+      <virtual-method name="part_changed" invoker="part_changed">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="part" transfer-ownership="none">
+            <type name="RenderPart" c:type="PangoRenderPart"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <virtual-method name="begin">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </virtual-method>
+      <virtual-method name="end">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </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>
+      <virtual-method name="draw_glyph_item" invoker="draw_glyph_item">
+        <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="char*"/>
+          </parameter>
+          <parameter name="glyph_item" transfer-ownership="none">
+            <type name="GlyphItem" c:type="PangoGlyphItem*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </virtual-method>
+      <method name="draw_layout"
+              c:identifier="pango_renderer_draw_layout"
+              doc="in Pango units.
+in Pango units.
+Draws @layout with the specified #PangoRenderer."
+              version="1.8">
+        <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="PangoLayout*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="draw_layout_line"
+              c:identifier="pango_renderer_draw_layout_line"
+              doc="in Pango units.
+in Pango units.
+Draws @line with the specified #PangoRenderer."
+              version="1.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="line" transfer-ownership="none">
+            <type name="LayoutLine" c:type="PangoLayoutLine*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="draw_glyphs"
+              c:identifier="pango_renderer_draw_glyphs"
+              doc="in Pango units.
+in Pango units.
+Draws the glyphs in @glyphs with the specified #PangoRenderer."
+              version="1.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font" transfer-ownership="none">
+            <type name="Font" c:type="PangoFont*"/>
+          </parameter>
+          <parameter name="glyphs" transfer-ownership="none">
+            <type name="GlyphString" c:type="PangoGlyphString*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="draw_glyph_item"
+              c:identifier="pango_renderer_draw_glyph_item"
+              doc="in Pango units.
+in Pango units.
+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()."
+              version="1.22">
+        <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="char*"/>
+          </parameter>
+          <parameter name="glyph_item" transfer-ownership="none">
+            <type name="GlyphItem" c:type="PangoGlyphItem*"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="y" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="draw_rectangle"
+              c:identifier="pango_renderer_draw_rectangle"
+              doc="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."
+              version="1.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="part" transfer-ownership="none">
+            <type name="RenderPart" c:type="PangoRenderPart"/>
+          </parameter>
+          <parameter name="x" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+          <parameter name="y" 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>
+      </method>
+      <method name="draw_error_underline"
+              c:identifier="pango_renderer_draw_error_underline"
+              doc="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."
+              version="1.8">
+        <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="int"/>
+          </parameter>
+          <parameter name="y" 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>
+      </method>
+      <method name="draw_trapezoid"
+              c:identifier="pango_renderer_draw_trapezoid"
+              doc="Draws a trapezoid with the parallel sides aligned with the X axis
+using the given #PangoRenderer; coordinates are in device space."
+              version="1.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="part" transfer-ownership="none">
+            <type name="RenderPart" c:type="PangoRenderPart"/>
+          </parameter>
+          <parameter name="y1_" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="x11" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="x21" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="y2" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="x12" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+          <parameter name="x22" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="draw_glyph"
+              c:identifier="pango_renderer_draw_glyph"
+              doc="Draws a single glyph with coordinates in device space."
+              version="1.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="font" transfer-ownership="none">
+            <type name="Font" c:type="PangoFont*"/>
+          </parameter>
+          <parameter name="glyph" transfer-ownership="none">
+            <type name="Glyph" c:type="PangoGlyph"/>
+          </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="activate"
+              c:identifier="pango_renderer_activate"
+              doc="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."
+              version="1.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="deactivate"
+              c:identifier="pango_renderer_deactivate"
+              doc="Cleans up after rendering operations on @renderer. See
+docs for pango_renderer_activate()."
+              version="1.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="part_changed"
+              c:identifier="pango_renderer_part_changed"
+              doc="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())"
+              version="1.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="part" transfer-ownership="none">
+            <type name="RenderPart" c:type="PangoRenderPart"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_color"
+              c:identifier="pango_renderer_set_color"
+              doc="Sets the color for part of the rendering."
+              version="1.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="part" transfer-ownership="none">
+            <type name="RenderPart" c:type="PangoRenderPart"/>
+          </parameter>
+          <parameter name="color" transfer-ownership="none">
+            <type name="Color" c:type="PangoColor*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_color"
+              c:identifier="pango_renderer_get_color"
+              doc="Gets the current rendering color for the specified part.
+if it hasn&apos;t been set and should be inherited from the
+environment."
+              version="1.8">
+        <return-value transfer-ownership="full">
+          <type name="Color" c:type="PangoColor*"/>
+        </return-value>
+        <parameters>
+          <parameter name="part" transfer-ownership="none">
+            <type name="RenderPart" c:type="PangoRenderPart"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_matrix"
+              c:identifier="pango_renderer_set_matrix"
+              doc="(No matrix set is the same as setting the identity matrix.)
+Sets the transformation matrix that will be applied when rendering."
+              version="1.8">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="matrix" transfer-ownership="none">
+            <type name="Matrix" c:type="PangoMatrix*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_matrix"
+              c:identifier="pango_renderer_get_matrix"
+              doc="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."
+              version="1.8">
+        <return-value transfer-ownership="none">
+          <type name="Matrix" c:type="PangoMatrix*"/>
+        </return-value>
+      </method>
+      <method name="get_layout"
+              c:identifier="pango_renderer_get_layout"
+              doc="Gets the layout currently being rendered using @renderer.
+Calling this function only makes sense from inside a subclass&apos;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."
+              version="1.20">
+        <return-value transfer-ownership="full">
+          <type name="Layout" c:type="PangoLayout*"/>
+        </return-value>
+      </method>
+      <method name="get_layout_line"
+              c:identifier="pango_renderer_get_layout_line"
+              doc="Gets the layout line currently being rendered using @renderer.
+Calling this function only makes sense from inside a subclass&apos;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."
+              version="1.20">
+        <return-value transfer-ownership="full">
+          <type name="LayoutLine" c:type="PangoLayoutLine*"/>
+        </return-value>
+      </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="boolean" c:type="gboolean"/>
+      </field>
+      <field name="active_count">
+        <type name="int" 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"
+            doc="covers the given rectangle in the style of an underline used to
+indicate a spelling error.
+in user coordinates.
+attributes change
+Class structure for #PangoRenderer."
+            version="1.8">
+      <field name="parent_class">
+        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+      </field>
+      <field name="draw_glyphs">
+        <callback name="draw_glyphs" c:type="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">
+              <type name="Font" c:type="PangoFont*"/>
+            </parameter>
+            <parameter name="glyphs" transfer-ownership="none">
+              <type name="GlyphString" c:type="PangoGlyphString*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_rectangle">
+        <callback name="draw_rectangle" c:type="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">
+              <type name="RenderPart" c:type="PangoRenderPart"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="y" 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>
+        </callback>
+      </field>
+      <field name="draw_error_underline">
+        <callback name="draw_error_underline" c:type="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">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="y" 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>
+        </callback>
+      </field>
+      <field name="draw_shape">
+        <callback name="draw_shape" c:type="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="int" c:type="int"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_trapezoid">
+        <callback name="draw_trapezoid" c:type="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">
+              <type name="RenderPart" c:type="PangoRenderPart"/>
+            </parameter>
+            <parameter name="y1_" transfer-ownership="none">
+              <type name="double" c:type="double"/>
+            </parameter>
+            <parameter name="x11" transfer-ownership="none">
+              <type name="double" c:type="double"/>
+            </parameter>
+            <parameter name="x21" transfer-ownership="none">
+              <type name="double" c:type="double"/>
+            </parameter>
+            <parameter name="y2" transfer-ownership="none">
+              <type name="double" c:type="double"/>
+            </parameter>
+            <parameter name="x12" transfer-ownership="none">
+              <type name="double" c:type="double"/>
+            </parameter>
+            <parameter name="x22" transfer-ownership="none">
+              <type name="double" c:type="double"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="draw_glyph">
+        <callback name="draw_glyph" c:type="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">
+              <type name="Font" c:type="PangoFont*"/>
+            </parameter>
+            <parameter name="glyph" transfer-ownership="none">
+              <type name="Glyph" c:type="PangoGlyph"/>
+            </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>
+        </callback>
+      </field>
+      <field name="part_changed">
+        <callback name="part_changed" c:type="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">
+              <type name="RenderPart" c:type="PangoRenderPart"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="begin">
+        <callback name="begin" c:type="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" c:type="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" c:type="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" c:type="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">
+              <type name="utf8" c:type="char*"/>
+            </parameter>
+            <parameter name="glyph_item" transfer-ownership="none">
+              <type name="GlyphItem" c:type="PangoGlyphItem*"/>
+            </parameter>
+            <parameter name="x" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+            <parameter name="y" transfer-ownership="none">
+              <type name="int" c:type="int"/>
+            </parameter>
+          </parameters>
+        </callback>
+      </field>
+      <field name="pango_reserved2">
+        <callback name="pango_reserved2" c:type="_pango_reserved2">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="pango_reserved3">
+        <callback name="pango_reserved3" c:type="_pango_reserved3">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+      <field name="pango_reserved4">
+        <callback name="pango_reserved4" c:type="_pango_reserved4">
+          <return-value transfer-ownership="none">
+            <type name="none" c:type="void"/>
+          </return-value>
+        </callback>
+      </field>
+    </record>
+    <record name="RendererPrivate" c:type="PangoRendererPrivate">
+    </record>
+    <constant name="SCALE" value="1024">
+      <type name="int"/>
+    </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="ScriptForLang" c:type="_PangoScriptForLang">
+      <field name="lang" writable="1">
+        <array zero-terminated="0" c:type="char" fixed-size="7">
+          <type name="int8"/>
+        </array>
+      </field>
+      <field name="scripts" writable="1">
+        <array zero-terminated="0" c:type="PangoScript" fixed-size="3">
+          <type name="Script"/>
+        </array>
+      </field>
+    </record>
+    <record name="ScriptIter"
+            c:type="PangoScriptIter"
+            doc="A #PangoScriptIter is used to iterate through a string
+and identify ranges in different scripts.">
+      <field name="text_start" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="text_end" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="script_start" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="script_end" writable="1">
+        <type name="utf8" c:type="gchar*"/>
+      </field>
+      <field name="script_code" writable="1">
+        <type name="Script" c:type="PangoScript"/>
+      </field>
+      <field name="paren_stack" writable="1">
+        <array zero-terminated="0" c:type="ParenStackEntry" fixed-size="128">
+          <type name="ParenStackEntry"/>
+        </array>
+      </field>
+      <field name="paren_sp" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <constructor name="new"
+                   c:identifier="pango_script_iter_new"
+                   doc="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."
+                   version="1.4">
+        <return-value transfer-ownership="full">
+          <type name="ScriptIter" c:type="PangoScriptIter*"/>
+        </return-value>
+        <parameters>
+          <parameter name="text" transfer-ownership="none">
+            <type name="utf8" c:type="char*"/>
+          </parameter>
+          <parameter name="length" transfer-ownership="none">
+            <type name="int" c:type="int"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="get_range"
+              c:identifier="pango_script_iter_get_range"
+              doc="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&apos;t include the character stored at *end)"
+              version="1.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="start" transfer-ownership="none">
+            <array c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="end" transfer-ownership="none">
+            <array c:type="char**">
+              <type name="utf8"/>
+            </array>
+          </parameter>
+          <parameter name="script" transfer-ownership="none">
+            <type name="Script" c:type="PangoScript*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="next"
+              c:identifier="pango_script_iter_next"
+              doc="Advances a #PangoScriptIter to the next range. If @iter
+is already at the end, it is left unchanged and %FALSE
+is returned."
+              version="1.4">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="pango_script_iter_free"
+              doc="Frees a #PangoScriptIter created with pango_script_iter_new()."
+              version="1.4">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </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"
+                 doc="An enumeration specifying the various slant styles possible for a font."
+                 glib:type-name="PangoStyle"
+                 glib:get-type="pango_style_get_type"
+                 c:type="PangoStyle">
+      <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">
+      <constructor name="new"
+                   c:identifier="pango_tab_array_new"
+                   doc="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().">
+        <return-value transfer-ownership="full">
+          <type name="TabArray" c:type="PangoTabArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="initial_size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="positions_in_pixels" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+        </parameters>
+      </constructor>
+      <constructor name="new_with_positions"
+                   c:identifier="pango_tab_array_new_with_positions"
+                   doc="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().">
+        <return-value transfer-ownership="full">
+          <type name="TabArray" c:type="PangoTabArray*"/>
+        </return-value>
+        <parameters>
+          <parameter name="size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="positions_in_pixels" transfer-ownership="none">
+            <type name="boolean" c:type="gboolean"/>
+          </parameter>
+          <parameter name="first_alignment" transfer-ownership="none">
+            <type name="TabAlign" c:type="PangoTabAlign"/>
+          </parameter>
+          <parameter name="first_position" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter transfer-ownership="none">
+            <varargs>
+            </varargs>
+          </parameter>
+        </parameters>
+      </constructor>
+      <method name="copy"
+              c:identifier="pango_tab_array_copy"
+              doc="Copies a #PangoTabArray
+be freed with pango_tab_array_free().">
+        <return-value transfer-ownership="full">
+          <type name="TabArray" c:type="PangoTabArray*"/>
+        </return-value>
+      </method>
+      <method name="free"
+              c:identifier="pango_tab_array_free"
+              doc="Frees a tab array and associated resources.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
+      <method name="get_size"
+              c:identifier="pango_tab_array_get_size"
+              doc="Gets the number of tab stops in @tab_array.">
+        <return-value transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </return-value>
+      </method>
+      <method name="resize"
+              c:identifier="pango_tab_array_resize"
+              doc="Resizes a tab array. You must subsequently initialize any tabs that
+were added as a result of growing the array.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="new_size" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="set_tab"
+              c:identifier="pango_tab_array_set_tab"
+              doc="Sets the alignment and location of a tab stop.
+implementation.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tab_index" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="alignment" transfer-ownership="none">
+            <type name="TabAlign" c:type="PangoTabAlign"/>
+          </parameter>
+          <parameter name="location" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tab"
+              c:identifier="pango_tab_array_get_tab"
+              doc="Gets the alignment and position of a tab stop.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="tab_index" transfer-ownership="none">
+            <type name="int" c:type="gint"/>
+          </parameter>
+          <parameter name="alignment" transfer-ownership="none">
+            <type name="TabAlign" c:type="PangoTabAlign*"/>
+          </parameter>
+          <parameter name="location" direction="out" transfer-ownership="full">
+            <type name="int" c:type="gint*"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_tabs"
+              c:identifier="pango_tab_array_get_tabs"
+              doc="If non-%NULL, @alignments and @locations are filled with allocated
+arrays of length pango_tab_array_get_size(). You must free the
+returned array.">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="alignments" transfer-ownership="none">
+            <type name="TabAlign" c:type="PangoTabAlign**"/>
+          </parameter>
+          <parameter name="locations"
+                     direction="out"
+                     transfer-ownership="full">
+            <type name="int" c:type="gint**"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_positions_in_pixels"
+              c:identifier="pango_tab_array_get_positions_in_pixels"
+              doc="Returns %TRUE if the tab positions are in pixels, %FALSE if they are
+in Pango units.">
+        <return-value transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </return-value>
+      </method>
+    </record>
+    <constant name="UNKNOWN_GLYPH_HEIGHT" value="14">
+      <type name="int"/>
+    </constant>
+    <constant name="UNKNOWN_GLYPH_WIDTH" value="10">
+      <type name="int"/>
+    </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>
+    <function name="attr_background_new"
+              c:identifier="pango_attr_background_new"
+              doc="Create a new background color attribute.
+freed with pango_attribute_destroy().">
+      <return-value transfer-ownership="full">
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_fallback_new"
+              c:identifier="pango_attr_fallback_new"
+              doc="for characters the active font is missing.
+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()."
+              version="1.4">
+      <return-value transfer-ownership="full">
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="enable_fallback" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_family_new"
+              c:identifier="pango_attr_family_new"
+              doc="Create a new font family attribute.
+freed with pango_attribute_destroy().">
+      <return-value transfer-ownership="full">
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="family" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_foreground_new"
+              c:identifier="pango_attr_foreground_new"
+              doc="Create a new foreground color attribute.
+freed with pango_attribute_destroy().">
+      <return-value transfer-ownership="full">
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_gravity_hint_new"
+              c:identifier="pango_attr_gravity_hint_new"
+              doc="Create a new gravity hint attribute.
+freed with pango_attribute_destroy()."
+              version="1.16">
+      <return-value transfer-ownership="full">
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="hint" transfer-ownership="none">
+          <type name="GravityHint" c:type="PangoGravityHint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_gravity_new"
+              c:identifier="pango_attr_gravity_new"
+              doc="Create a new gravity attribute.
+freed with pango_attribute_destroy()."
+              version="1.16">
+      <return-value transfer-ownership="full">
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="gravity" transfer-ownership="none">
+          <type name="Gravity" c:type="PangoGravity"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_letter_spacing_new"
+              c:identifier="pango_attr_letter_spacing_new"
+              doc="of the text, in Pango units.
+Create a new letter-spacing attribute.
+freed with pango_attribute_destroy()."
+              version="1.6">
+      <return-value transfer-ownership="full">
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="letter_spacing" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_rise_new"
+              c:identifier="pango_attr_rise_new"
+              doc="in Pango units. Positive values displace the text upwards.
+Create a new baseline displacement attribute.
+freed with pango_attribute_destroy().">
+      <return-value transfer-ownership="full">
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="rise" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_scale_new"
+              c:identifier="pango_attr_scale_new"
+              doc="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().">
+      <return-value transfer-ownership="full">
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="scale_factor" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_stretch_new"
+              c:identifier="pango_attr_stretch_new"
+              doc="Create a new font stretch attribute
+freed with pango_attribute_destroy().">
+      <return-value transfer-ownership="full">
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="stretch" transfer-ownership="none">
+          <type name="Stretch" c:type="PangoStretch"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_strikethrough_color_new"
+              c:identifier="pango_attr_strikethrough_color_new"
+              doc="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()."
+              version="1.8">
+      <return-value transfer-ownership="full">
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_strikethrough_new"
+              c:identifier="pango_attr_strikethrough_new"
+              doc="Create a new strike-through attribute.
+freed with pango_attribute_destroy().">
+      <return-value transfer-ownership="full">
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="strikethrough" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_style_new"
+              c:identifier="pango_attr_style_new"
+              doc="Create a new font slant style attribute.
+freed with pango_attribute_destroy().">
+      <return-value transfer-ownership="full">
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="style" transfer-ownership="none">
+          <type name="Style" c:type="PangoStyle"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_type_get_name"
+              c:identifier="pango_attr_type_get_name"
+              doc="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."
+              version="1.22">
+      <return-value transfer-ownership="none" doc="or %NULL if @type is">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="type" transfer-ownership="none">
+          <type name="AttrType" c:type="PangoAttrType"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_type_register"
+              c:identifier="pango_attr_type_register"
+              doc="Allocate a new attribute type ID.  The attribute type name can be accessed
+later by using pango_attr_type_get_name().">
+      <return-value transfer-ownership="full">
+        <type name="AttrType" c:type="PangoAttrType"/>
+      </return-value>
+      <parameters>
+        <parameter name="name" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_underline_color_new"
+              c:identifier="pango_attr_underline_color_new"
+              doc="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()."
+              version="1.8">
+      <return-value transfer-ownership="full">
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="red" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="green" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+        <parameter name="blue" transfer-ownership="none">
+          <type name="uint16" c:type="guint16"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_underline_new"
+              c:identifier="pango_attr_underline_new"
+              doc="Create a new underline-style attribute.
+freed with pango_attribute_destroy().">
+      <return-value transfer-ownership="full">
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="underline" transfer-ownership="none">
+          <type name="Underline" c:type="PangoUnderline"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_variant_new"
+              c:identifier="pango_attr_variant_new"
+              doc="Create a new font variant attribute (normal or small caps)
+freed with pango_attribute_destroy().">
+      <return-value transfer-ownership="full">
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="variant" transfer-ownership="none">
+          <type name="Variant" c:type="PangoVariant"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="attr_weight_new"
+              c:identifier="pango_attr_weight_new"
+              doc="Create a new font weight attribute.
+freed with pango_attribute_destroy().">
+      <return-value transfer-ownership="full">
+        <type name="Attribute" c:type="PangoAttribute*"/>
+      </return-value>
+      <parameters>
+        <parameter name="weight" transfer-ownership="none">
+          <type name="Weight" c:type="PangoWeight"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="bidi_type_for_unichar"
+              c:identifier="pango_bidi_type_for_unichar">
+      <return-value transfer-ownership="full">
+        <type name="BidiType" c:type="PangoBidiType"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <type name="GLib.unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="break"
+              c:identifier="pango_break"
+              doc="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().">
+      <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="int" c:type="int"/>
+        </parameter>
+        <parameter name="analysis" transfer-ownership="none">
+          <type name="Analysis" c:type="PangoAnalysis*"/>
+        </parameter>
+        <parameter name="attrs" transfer-ownership="none">
+          <type name="LogAttr" c:type="PangoLogAttr*"/>
+        </parameter>
+        <parameter name="attrs_len" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="coverage_from_bytes"
+              c:identifier="pango_coverage_from_bytes"
+              doc="Convert data generated from pango_converage_to_bytes() back
+to a #PangoCoverage
+the data was invalid.">
+      <return-value transfer-ownership="full">
+        <type name="Coverage" c:type="PangoCoverage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="bytes" transfer-ownership="none">
+          <array c:type="guchar*">
+            <type name="uint8"/>
+          </array>
+        </parameter>
+        <parameter name="n_bytes" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="extents_to_pixels"
+              c:identifier="pango_extents_to_pixels"
+              doc="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."
+              version="1.16">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="inclusive" transfer-ownership="none">
+          <type name="Rectangle" c:type="PangoRectangle*"/>
+        </parameter>
+        <parameter name="nearest" transfer-ownership="none">
+          <type name="Rectangle" c:type="PangoRectangle*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="find_base_dir"
+              c:identifier="pango_find_base_dir"
+              doc="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."
+              version="1.4">
+      <return-value transfer-ownership="full">
+        <type name="Direction" c:type="PangoDirection"/>
+      </return-value>
+      <parameters>
+        <parameter name="text" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="int" c:type="gint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="find_paragraph_boundary"
+              c:identifier="pango_find_paragraph_boundary"
+              doc="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).">
+      <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="int" c:type="gint"/>
+        </parameter>
+        <parameter name="paragraph_delimiter_index"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+        <parameter name="next_paragraph_start"
+                   direction="out"
+                   transfer-ownership="full">
+          <type name="int" c:type="gint*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_log_attrs"
+              c:identifier="pango_get_log_attrs"
+              doc="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&apos;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).">
+      <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="char*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="level" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="language" transfer-ownership="none">
+          <type name="Language" c:type="PangoLanguage*"/>
+        </parameter>
+        <parameter name="log_attrs" transfer-ownership="none">
+          <type name="LogAttr" c:type="PangoLogAttr*"/>
+        </parameter>
+        <parameter name="attrs_len" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="get_mirror_char"
+              c:identifier="pango_get_mirror_char"
+              doc="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&apos;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">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <type name="GLib.unichar" c:type="gunichar"/>
+        </parameter>
+        <parameter name="mirrored_ch" transfer-ownership="none">
+          <type name="GLib.unichar" c:type="gunichar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gravity_get_for_matrix"
+              c:identifier="pango_gravity_get_for_matrix"
+              doc="Finds the gravity that best matches the rotation component
+in a #PangoMatrix.
+%PANGO_GRAVITY_AUTO, or %PANGO_GRAVITY_SOUTH if @matrix is %NULL"
+              version="1.16">
+      <return-value transfer-ownership="full">
+        <type name="Gravity" c:type="PangoGravity"/>
+      </return-value>
+      <parameters>
+        <parameter name="matrix" transfer-ownership="none">
+          <type name="Matrix" c:type="PangoMatrix*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gravity_get_for_script"
+              c:identifier="pango_gravity_get_for_script"
+              doc="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."
+              version="1.16">
+      <return-value transfer-ownership="full">
+        <type name="Gravity" c:type="PangoGravity"/>
+      </return-value>
+      <parameters>
+        <parameter name="script" transfer-ownership="none">
+          <type name="Script" c:type="PangoScript"/>
+        </parameter>
+        <parameter name="base_gravity" transfer-ownership="none">
+          <type name="Gravity" c:type="PangoGravity"/>
+        </parameter>
+        <parameter name="hint" transfer-ownership="none">
+          <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"
+              doc="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."
+              version="1.26">
+      <return-value transfer-ownership="full">
+        <type name="Gravity" c:type="PangoGravity"/>
+      </return-value>
+      <parameters>
+        <parameter name="script" transfer-ownership="none">
+          <type name="Script" c:type="PangoScript"/>
+        </parameter>
+        <parameter name="wide" transfer-ownership="none">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="base_gravity" transfer-ownership="none">
+          <type name="Gravity" c:type="PangoGravity"/>
+        </parameter>
+        <parameter name="hint" transfer-ownership="none">
+          <type name="GravityHint" c:type="PangoGravityHint"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="gravity_to_rotation"
+              c:identifier="pango_gravity_to_rotation"
+              doc="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)."
+              version="1.16">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="double"/>
+      </return-value>
+      <parameters>
+        <parameter name="gravity" transfer-ownership="none">
+          <type name="Gravity" c:type="PangoGravity"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="is_zero_width"
+              c:identifier="pango_is_zero_width"
+              doc="Checks @ch to see if it is a character that should not be
+normally rendered on the screen.  This includes all Unicode characters
+with &quot;ZERO WIDTH&quot; 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."
+              version="1.10">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <type name="GLib.unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="itemize"
+              c:identifier="pango_itemize"
+              doc="e itemization process.
+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).">
+      <return-value transfer-ownership="full">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="Context" c:type="PangoContext*"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="start_index" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none" doc="to process">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="attrs" transfer-ownership="none">
+          <type name="AttrList" c:type="PangoAttrList*"/>
+        </parameter>
+        <parameter name="cached_iter" transfer-ownership="none">
+          <type name="AttrIterator" c:type="PangoAttrIterator*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="itemize_with_base_dir"
+              c:identifier="pango_itemize_with_base_dir"
+              doc="e itemization process.
+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()."
+              version="1.4">
+      <return-value transfer-ownership="full">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="Context" c:type="PangoContext*"/>
+        </parameter>
+        <parameter name="base_dir" transfer-ownership="none">
+          <type name="Direction" c:type="PangoDirection"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="start_index" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none" doc="to process">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="attrs" transfer-ownership="none">
+          <type name="AttrList" c:type="PangoAttrList*"/>
+        </parameter>
+        <parameter name="cached_iter" transfer-ownership="none">
+          <type name="AttrIterator" c:type="PangoAttrIterator*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="language_from_string"
+              c:identifier="pango_language_from_string"
+              doc="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 &apos;_&apos; to &apos;-&apos;, and stripping all characters other
+than letters and &apos;-&apos;.
+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.">
+      <return-value transfer-ownership="full">
+        <type name="Language" c:type="PangoLanguage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="language" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="language_get_default"
+              c:identifier="pango_language_get_default"
+              doc="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&apos;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&apos;s current locale.
+Your application should call &lt;literal&gt;setlocale(LC_ALL, &quot;&quot;);&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."
+              version="1.16">
+      <return-value transfer-ownership="full">
+        <type name="Language" c:type="PangoLanguage*"/>
+      </return-value>
+    </function>
+    <function name="log2vis_get_embedding_levels"
+              c:identifier="pango_log2vis_get_embedding_levels"
+              doc="if @text is nul-terminated and the length should be calculated.
+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."
+              version="1.4">
+      <return-value transfer-ownership="full">
+        <array c:type="guint8*">
+          <type name="uint8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="text" transfer-ownership="none">
+          <type name="utf8" c:type="gchar*"/>
+        </parameter>
+        <parameter name="length"
+                   transfer-ownership="none"
+                   doc="to process, or -1">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="pbase_dir" transfer-ownership="none">
+          <type name="Direction" c:type="PangoDirection*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_enum"
+              c:identifier="pango_parse_enum"
+              doc="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
+&quot;none/start/middle/end&quot;.  If failed and @possible_values is not %NULL,
+returned string should be freed using g_free()."
+              version="1.16">
+      <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>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="value" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="warn" transfer-ownership="none" doc="on bad input.">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+        <parameter name="possible_values" transfer-ownership="none">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_markup"
+              c:identifier="pango_parse_markup"
+              doc="Parses marked-up text (see
+&lt;link linkend=&quot;PangoMarkupFormat&quot;&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."
+              throws="1">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="markup_text" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="length" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="accel_marker" transfer-ownership="none">
+          <type name="GLib.unichar" c:type="gunichar"/>
+        </parameter>
+        <parameter name="attr_list" transfer-ownership="none">
+          <type name="AttrList" c:type="PangoAttrList**"/>
+        </parameter>
+        <parameter name="text" transfer-ownership="none">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="accel_char" transfer-ownership="none">
+          <type name="GLib.unichar" c:type="gunichar*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_stretch"
+              c:identifier="pango_parse_stretch"
+              doc="Parses a font stretch. The allowed values are
+&quot;ultra_condensed&quot;, &quot;extra_condensed&quot;, &quot;condensed&quot;,
+&quot;semi_condensed&quot;, &quot;normal&quot;, &quot;semi_expanded&quot;, &quot;expanded&quot;,
+&quot;extra_expanded&quot; and &quot;ultra_expanded&quot;. Case variations are
+ignored and the &apos;_&apos; characters may be omitted.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="stretch" transfer-ownership="none">
+          <type name="Stretch" c:type="PangoStretch*"/>
+        </parameter>
+        <parameter name="warn" transfer-ownership="none" doc="on bad input.">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_style"
+              c:identifier="pango_parse_style"
+              doc="Parses a font style. The allowed values are &quot;normal&quot;,
+&quot;italic&quot; and &quot;oblique&quot;, case variations being
+ignored.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="style" transfer-ownership="none">
+          <type name="Style" c:type="PangoStyle*"/>
+        </parameter>
+        <parameter name="warn" transfer-ownership="none" doc="on bad input.">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_variant"
+              c:identifier="pango_parse_variant"
+              doc="Parses a font variant. The allowed values are &quot;normal&quot;
+and &quot;smallcaps&quot; or &quot;small_caps&quot;, case variations being
+ignored.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="variant" transfer-ownership="none">
+          <type name="Variant" c:type="PangoVariant*"/>
+        </parameter>
+        <parameter name="warn" transfer-ownership="none" doc="on bad input.">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="parse_weight"
+              c:identifier="pango_parse_weight"
+              doc="Parses a font weight. The allowed values are &quot;heavy&quot;,
+&quot;ultrabold&quot;, &quot;bold&quot;, &quot;normal&quot;, &quot;light&quot;, &quot;ultraleight&quot;
+and integers. Case variations are ignored.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+        <parameter name="weight" transfer-ownership="none">
+          <type name="Weight" c:type="PangoWeight*"/>
+        </parameter>
+        <parameter name="warn" transfer-ownership="none" doc="on bad input.">
+          <type name="boolean" c:type="gboolean"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="quantize_line_geometry"
+              c:identifier="pango_quantize_line_geometry"
+              doc="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."
+              version="1.12">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="thickness" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+        <parameter name="position" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="reorder_items"
+              c:identifier="pango_reorder_items"
+              doc="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.)">
+      <return-value transfer-ownership="full">
+        <type name="GLib.List" c:type="GList*"/>
+      </return-value>
+      <parameters>
+        <parameter name="logical_items" transfer-ownership="none">
+          <type name="GLib.List" c:type="GList*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scan_int"
+              c:identifier="pango_scan_int"
+              doc="Scans an integer.
+Leading white space is skipped.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pos" transfer-ownership="none">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="out" direction="out" transfer-ownership="full">
+          <type name="int" c:type="int*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scan_string"
+              c:identifier="pango_scan_string"
+              doc="Scans a string into a #GString buffer. The string may either
+be a sequence of non-white-space characters, or a quoted
+string with &apos;&quot;&apos;. Instead a quoted string, &apos;\&quot;&apos; represents
+a literal quote. Leading white space outside of quotes is skipped.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pos" transfer-ownership="none">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="out" transfer-ownership="none">
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="scan_word"
+              c:identifier="pango_scan_word"
+              doc="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.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pos" transfer-ownership="none">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+        <parameter name="out" transfer-ownership="none">
+          <type name="GLib.String" c:type="GString*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="script_for_unichar"
+              c:identifier="pango_script_for_unichar"
+              doc="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()."
+              version="1.4">
+      <return-value transfer-ownership="full">
+        <type name="Script" c:type="PangoScript"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <type name="GLib.unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="script_get_sample_language"
+              c:identifier="pango_script_get_sample_language"
+              doc="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&apos;s font selection for non-primary
+languages.  For example, a PANGO_LANGUAGE enviroment variable
+set to &quot;en:fa&quot; 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."
+              version="1.4">
+      <return-value transfer-ownership="full">
+        <type name="Language" c:type="PangoLanguage*"/>
+      </return-value>
+      <parameters>
+        <parameter name="script" transfer-ownership="none">
+          <type name="Script" c:type="PangoScript"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="shape"
+              c:identifier="pango_shape"
+              doc="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().">
+      <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" doc="of @text">
+          <type name="int" c:type="gint"/>
+        </parameter>
+        <parameter name="analysis" transfer-ownership="none">
+          <type name="Analysis" c:type="PangoAnalysis*"/>
+        </parameter>
+        <parameter name="glyphs" transfer-ownership="none">
+          <type name="GlyphString" c:type="PangoGlyphString*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="skip_space"
+              c:identifier="pango_skip_space"
+              doc="Skips 0 or more characters of white space.
+the position at a &apos;\0&apos; character.">
+      <return-value transfer-ownership="none">
+        <type name="boolean" c:type="gboolean"/>
+      </return-value>
+      <parameters>
+        <parameter name="pos" transfer-ownership="none">
+          <array c:type="char**">
+            <type name="utf8"/>
+          </array>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="split_file_list"
+              c:identifier="pango_split_file_list"
+              doc="Splits a %G_SEARCHPATH_SEPARATOR-separated list of files, stripping
+white space and substituting ~/ with $HOME/.">
+      <return-value transfer-ownership="full">
+        <array c:type="char**">
+          <type name="utf8"/>
+        </array>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="trim_string"
+              c:identifier="pango_trim_string"
+              doc="Trims leading and trailing whitespace from a string.">
+      <return-value transfer-ownership="full">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="str" transfer-ownership="none">
+          <type name="utf8" c:type="char*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="unichar_direction"
+              c:identifier="pango_unichar_direction"
+              doc="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.">
+      <return-value transfer-ownership="full">
+        <type name="Direction" c:type="PangoDirection"/>
+      </return-value>
+      <parameters>
+        <parameter name="ch" transfer-ownership="none">
+          <type name="GLib.unichar" c:type="gunichar"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="units_from_double"
+              c:identifier="pango_units_from_double"
+              doc="it by %PANGO_SCALE and rounds to nearest integer."
+              version="1.16">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+      <parameters>
+        <parameter name="d" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="units_to_double"
+              c:identifier="pango_units_to_double"
+              doc="it by %PANGO_SCALE."
+              version="1.16">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="double"/>
+      </return-value>
+      <parameters>
+        <parameter name="i" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="version"
+              c:identifier="pango_version"
+              doc="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."
+              version="1.16">
+      <return-value transfer-ownership="none">
+        <type name="int" c:type="int"/>
+      </return-value>
+    </function>
+    <function name="version_check"
+              c:identifier="pango_version_check"
+              doc="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."
+              version="1.16">
+      <return-value transfer-ownership="none">
+        <type name="utf8" c:type="char*"/>
+      </return-value>
+      <parameters>
+        <parameter name="required_major" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="required_minor" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+        <parameter name="required_micro" transfer-ownership="none">
+          <type name="int" c:type="int"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="version_string"
+              c:identifier="pango_version_string"
+              doc="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."
+              version="1.16">
+      <return-value transfer-ownership="none">
+        <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..13d9e9d
--- /dev/null
@@ -0,0 +1,203 @@
+<?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="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:prefix="PangoCairo">
+    <record name="FcFontMap" c:type="PangoCairoFcFontMap">
+    </record>
+    <record name="Font"
+            c:type="PangoCairoFont"
+            doc="#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."
+            version="1.18">
+    </record>
+    <record name="FontGlyphExtentsCacheEntry"
+            c:type="PangoCairoFontGlyphExtentsCacheEntry">
+    </record>
+    <record name="FontHexBoxInfo" c:type="PangoCairoFontHexBoxInfo">
+      <field name="font" writable="1">
+        <type name="Font" c:type="PangoCairoFont*"/>
+      </field>
+      <field name="rows" writable="1">
+        <type name="int" c:type="int"/>
+      </field>
+      <field name="digit_width" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+      <field name="digit_height" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+      <field name="pad_x" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+      <field name="pad_y" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+      <field name="line_width" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+      <field name="box_descent" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+      <field name="box_height" writable="1">
+        <type name="double" c:type="double"/>
+      </field>
+    </record>
+    <record name="FontIface" c:type="PangoCairoFontIface">
+    </record>
+    <record name="FontMap"
+            c:type="PangoCairoFontMap"
+            doc="#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."
+            version="1.10">
+      <constructor name="new"
+                   c:identifier="pango_cairo_font_map_new"
+                   doc="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()."
+                   version="1.10">
+        <return-value transfer-ownership="full">
+          <type name="FontMap" c:type="PangoFontMap*"/>
+        </return-value>
+      </constructor>
+      <method name="set_default"
+              c:identifier="pango_cairo_font_map_set_default"
+              doc="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()."
+              version="1.22">
+        <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"
+              doc="involved; the terminology is conventional.)
+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)."
+              version="1.10">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="dpi" transfer-ownership="none">
+            <type name="double" c:type="double"/>
+          </parameter>
+        </parameters>
+      </method>
+      <method name="get_resolution"
+              c:identifier="pango_cairo_font_map_get_resolution"
+              doc="Gets the resolution for the fontmap. See pango_cairo_font_map_set_resolution()"
+              version="1.10">
+        <return-value transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </return-value>
+      </method>
+      <method name="create_context"
+              c:identifier="pango_cairo_font_map_create_context"
+              doc="Create a #PangoContext for the given fontmap."
+              version="1.10"
+              deprecated="Use pango_font_map_create_context() instead."
+              deprecated-version="1.22">
+        <return-value transfer-ownership="full">
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </return-value>
+      </method>
+    </record>
+    <record name="FontMapIface" c:type="PangoCairoFontMapIface">
+    </record>
+    <record name="FontPrivate" c:type="PangoCairoFontPrivate">
+    </record>
+    <record name="FontPrivateScaledFontData"
+            c:type="PangoCairoFontPrivateScaledFontData">
+    </record>
+    <constant name="HEIGHT_SQUARES" value="2.5">
+      <type name="double"/>
+    </constant>
+    <record name="Renderer" c:type="PangoCairoRenderer">
+    </record>
+    <function name="context_get_resolution"
+              c:identifier="pango_cairo_context_get_resolution"
+              doc="Gets the resolution for the context. See pango_cairo_context_set_resolution()
+be returned if no resolution has previously been set."
+              version="1.10">
+      <return-value transfer-ownership="none">
+        <type name="double" c:type="double"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="context_set_resolution"
+              c:identifier="pango_cairo_context_set_resolution"
+              doc="involved; the terminology is conventional.) A 0 or negative value
+means to use the resolution from the font map.
+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)."
+              version="1.10">
+      <return-value transfer-ownership="none">
+        <type name="none" c:type="void"/>
+      </return-value>
+      <parameters>
+        <parameter name="context" transfer-ownership="none">
+          <type name="Pango.Context" c:type="PangoContext*"/>
+        </parameter>
+        <parameter name="dpi" transfer-ownership="none">
+          <type name="double" c:type="double"/>
+        </parameter>
+      </parameters>
+    </function>
+    <function name="font_map_get_default"
+              c:identifier="pango_cairo_font_map_get_default"
+              doc="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."
+              version="1.10">
+      <return-value transfer-ownership="full">
+        <type name="Pango.FontMap" c:type="PangoFontMap*"/>
+      </return-value>
+    </function>
+  </namespace>
+</repository>
diff --git a/extra/gir/samples/lowlevel/authors.txt b/extra/gir/samples/lowlevel/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/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..c8a2c4e
--- /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 
+io.encodings.utf8 kernel locals math prettyprint 
+gst gst.ffi glib.ffi gobject.ffi gtk 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
+
+    GType gint64 [ heap-size ] bi@ 2 * + <byte-array> :> 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/gir/samples/lowlevel/hello-world/authors.txt b/extra/gir/samples/lowlevel/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/gir/samples/lowlevel/hello-world/hello-world.factor b/extra/gir/samples/lowlevel/hello-world/hello-world.factor
new file mode 100644 (file)
index 0000000..6f83216
--- /dev/null
@@ -0,0 +1,44 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien.strings gtk gobject.ffi gtk.ffi io.encodings.utf8
+kernel locals ;
+IN: gir.samples.lowlevel.hello-world
+
+:: 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
+    [ nip "Hello! :)" utf8 string>alien gtk_label_set_text 1 ] GtkButton:clicked
+    label f 0 g_signal_connect_data 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 f 0 g_signal_connect_data drop
+
+    window gtk_widget_show_all
+    
+    gtk_main ;
+
+MAIN: hello-world-main
+
diff --git a/extra/gir/samples/lowlevel/lowlevel.factor b/extra/gir/samples/lowlevel/lowlevel.factor
new file mode 100644 (file)
index 0000000..98b8a1c
--- /dev/null
@@ -0,0 +1,81 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien.c-types alien.strings byte-arrays
+gtk glib.ffi gobject.ffi gtk.ffi io.encodings.utf8 kernel
+literals locals make math prettyprint sequences specialized-arrays
+gir.samples.lowlevel.hello-world
+gir.samples.lowlevel.opengl
+gir.samples.lowlevel.gstreamer ;
+IN: gir.samples.lowlevel
+
+SPECIALIZED-ARRAY: ulong
+
+CONSTANT: samples {
+    { "hello-world" "Simple 'Hello world!' program" [ hello-world-win ] }
+    { "opengl" "GtkGLExt sample program" [ opengl-win ] }
+    { "gstreamer" "Small GStreamer-based multimedia player " [ gstreamer-win ] }
+}
+
+:: list-on-row-activited ( sender path column user_data -- )
+    path gtk_tree_path_get_indices *int samples nth last
+    call( -- win ) gtk_widget_show_all ;
+
+:: main ( -- )
+    f f gtk_init
+    
+    GTK_WINDOW_TOPLEVEL gtk_window_new :> window
+
+    window
+    [ "Low-level Gtk samples" utf8 string>alien gtk_window_set_title ]
+    [ 300 400 gtk_window_set_default_size ]
+    [ GTK_WIN_POS_CENTER gtk_window_set_position ] tri
+  
+    gtk_tree_view_new :> list
+    list 0 gtk_tree_view_set_headers_visible
+
+    gtk_cell_renderer_text_new :> renderer
+    gtk_tree_view_column_new :> column
+    column "Sample" utf8 string>alien gtk_tree_view_column_set_title
+    column renderer 1 gtk_tree_view_column_pack_start
+    column renderer "markup" utf8 string>alien 0 gtk_tree_view_column_add_attribute
+    list column gtk_tree_view_append_column drop
+
+    ulong-array{ $ G_TYPE_STRING }
+    [ length ] keep gtk_list_store_newv :> store
+
+    list store gtk_tree_view_set_model
+
+    store g_object_unref
+
+    ! Временный фикс, нужно придумать что-то другое, так как нет
+    ! конструктора для создания GtkTreeIter
+    gint gpointer [ heap-size ] bi@ 3 * + <byte-array> :> iter
+
+    GType gint64 [ heap-size ] bi@ 2 * + <byte-array> :> value
+    value G_TYPE_STRING g_value_init drop
+    samples [
+        first2 swap [ "<big><b>" % % "</b></big>\n" % % ] "" make
+        value swap utf8 string>alien g_value_set_string
+        store iter gtk_list_store_append
+        store iter 0 value gtk_list_store_set_value
+    ] each
+  
+    list 300 300 gtk_widget_set_size_request
+
+    window list gtk_container_add
+
+    list "row-activated"
+    utf8 string>alien
+    [ list-on-row-activited ] GtkTreeView:row-activated dup .
+    f f 0 g_signal_connect_data .
+
+    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: main
+
diff --git a/extra/gir/samples/lowlevel/opengl/authors.txt b/extra/gir/samples/lowlevel/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/gir/samples/lowlevel/opengl/opengl.factor b/extra/gir/samples/lowlevel/opengl/opengl.factor
new file mode 100644 (file)
index 0000000..d4cbbc5
--- /dev/null
@@ -0,0 +1,93 @@
+! Copyright (C) 2010 Anton Gorenko.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien.strings gtk gobject.ffi gtk.ffi gdk.gl gtk.gl gdk.gl.ffi
+gtk.gl.ffi io.encodings.utf8 kernel locals math opengl.gl prettyprint ;
+IN: gir.samples.lowlevel.opengl
+
+! Sample 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 1 =
+    [
+        0 0 200 200 glViewport
+        gl-drawable gdk_gl_drawable_gl_end
+        1
+    ]
+    [ 0 ] if ;
+
+:: 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 1 =
+    [
+        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
+        1
+    ]
+    [ 0 ] if ;
+    
+:: 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
+
+    window 1 gtk_container_set_reallocate_redraws
+
+    GDK_GL_MODE_RGBA GDK_GL_MODE_DOUBLE bitor
+    gdk_gl_config_new_by_mode :> gl-config
+    
+    gtk_drawing_area_new :> drawing-area
+    drawing-area 200 200 gtk_widget_set_size_request
+
+    drawing-area gl-config f 1 GDK_GL_RGBA_TYPE
+    gtk_widget_set_gl_capability .
+
+    drawing-area "configure-event" utf8 string>alien
+    [ on-configure ] GtkWidget:configure-event
+    f f 0 g_signal_connect_data drop
+
+    drawing-area "expose-event" utf8 string>alien
+    [ on-expose ] GtkWidget:expose-event
+    f f 0 g_signal_connect_data drop    
+
+    window drawing-area gtk_container_add    
+
+    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
+